2014-11-25 12 views
34

Fehler in Safari anzeigen.Fehler beim Ausführen von 'createObjectURL' unter 'URL':

Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided. 

mein Code:

function createObjectURL(object) { 
    return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object); 
} 

Das ist mein-Code für Bild ist:

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

Hallo Hardik, was gibst du an deine 'createObjectURL (...)' Funktion, wenn du diesen Fehler bekommst? –

+2

Objekt muss ein File-Objekt oder ein Blob-Objekt sein, um eine Objekt-URL für http://devdocs.io/dom/window.url.createobjecturl zu erstellen. – yxf

+1

Dies ist mein Code für image: function myUploadOnChangeFunction() { if (this.files.length) { für (var i in this.files) { if (this.files.hasOwnProperty (i)) { var src = createObjectURL (this.files [i]); var image = neues Bild(); image.src = src; imagSRC = src; $ ('# img') .attr ('src', src); } } } } –

Antwort

40

ich denselben Fehler erfahren, wenn ich createObjectURL Rohdaten übergeben:

window.URL.createObjectURL(data) 

Es muss sein Blob oder File-Objekt, nicht Daten selbst. Dieser arbeitete für mich:

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

Überprüfen Sie auch die MDN für weitere Informationen: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

0

Das Problem ist, dass die Schlüssel in der Schleife vorgesehen beziehen sich nicht auf den Index der Datei.

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

Die Ausgabe des obigen Codes ist:

0 
length 
item 

Aber was erwartet wurde, war:

0 
1 
2 
etc... 

Dann wird der Fehler tritt auf, wenn der Browser, zum Beispiel auszuführen versucht:

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

ich su ggest Implementierung basierend auf dem folgenden Code:

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

Ich hoffe, das kann jemand helfen.

Grüße!