Не удалось выполнить "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);
    ...
}

Я надеюсь, что это может помочь кому-то.

Привет!