Не удалось выполнить "createObjectURL" на "URL":
показать ниже ошибку в Safari.
Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.
мой код:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
Это мой код для изображения:
function myUploadOnChangeFunction() {
if (this.files.length) {
for (var i in this.files) {
if (this.files.hasOwnProperty(i)) {
var src = createObjectURL(this.files[i]);
var image = new Image();
image.src = src;
imagSRC = src;
$('#img').attr('src', src);
} }
} }
2 ответов
я испытал ту же ошибку, когда я перешла к createObjectURL
исходные данные:
window.URL.createObjectURL(data)
это должно быть Blob
, File
или MediaSource
объект, а не сами данные. Это сработало для меня:
var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
проверьте также МДН дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
проблема в том, что ключи, предоставленные в цикле, не ссылаются на индекс файла.
for (var i in this.files) {
console.log(i);
}
вывод вышеуказанного кода:
0
length
item
но как ожидается:
0
1
2
etc...
затем возникает ошибка, когда браузер пытается выполнить, например:
window.URL.createObjectURL(this.files["length"])
Я предлагаю реализацию на основе следующего кода:
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files[i],
src = (window.URL || window.webkitURL).createObjectURL(file);
...
}
Я надеюсь, что это может помочь кому-то.
Привет!