2014-11-25 90 views
34

在Safari中顯示以下錯誤。未能在'URL'上執行'createObjectURL':

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); 
       } }   
      } } 
+5

嗨哈迪克,當你得到那個錯誤時,你傳遞給你的'createObjectURL(...)'函數是什麼? – 2014-11-25 07:38:47

+2

對象必須是File對象或Blob對象才能創建對象URL for.see http://devdocs.io/dom/window.url.createobjecturl – yxf 2014-11-25 07:38:54

+1

這是我的Image for Image:function myUploadOnChangeFunction(){ if(如果(this.files.hasOwnProperty(i))var src = createObjectURL(this.files [i]); var image = new Image(); image.src = src; imagSRC = src; $('#img')。attr('src',src); } } } } – 2014-11-25 07:46:14

回答

40

我經歷了同樣的錯誤,當我傳給createObjectURL原始數據:

window.URL.createObjectURL(data) 

它必須是Blob或File對象,而不是數據本身。這爲我工作:

var binaryData = []; 
binaryData.push(data); 
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"})) 

檢查也MDN更多信息:https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

0

的問題是,在環提供的密鑰不引用該文件的索引。

for (var i in this.files) { 
    console.log(i); 
} 

上述代碼的輸出是:

0 
length 
item 

但是預期爲:

0 
1 
2 
etc... 

然後,當瀏覽器試圖執行,例如出現錯誤:

window.URL.createObjectURL(this.files["length"]) 

我su根據以下代碼提供的實現:

var files = this.files; 
for (var i = 0; i < files.length; i++) { 
    var file = files[i], 
     src = (window.URL || window.webkitURL).createObjectURL(file); 
    ... 
} 

我希望這可以幫助某人。

問候!

相關問題