2015-11-20 14 views
7

Ich benutze File() - Konstruktor zum Erstellen von Dateiobjekt zum Hochladen einer BLOB-Datei auf den Server, der Code funktioniert gut für Chrome, aber nicht für Safari und Internet Explorer. Nach der Code-Zeile ist:Alternative für File() - Konstruktor für Safari

image_url = new File([blob],file_name,{type: mimeString}); 

-Code wird an dieser Linie und immer diese Fehlermeldung in der Konsole „FileConstructor ist bricht kein Konstruktor (‚neue Datei ([blob], file_name, Bewertung {type: mimeString}) ') "

Die Verwendung der Filereader API ist eine Alternative, aber ich kann dieses Problem nicht beheben.

Hilfe wäre sehr willkommen. Vielen Dank.

Antwort

2

Laut Web "Kann ich verwenden" Safari unterstützt die new File() Konstruktor nicht. Siehe diesen Link http://caniuse.com/#feat=fileapi

Also ich denke, du hast entweder Filereader verwenden, oder vielleicht einige der polyfills hier aufgeführten verwenden https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

Insbesondere könnte dies ein für Sie nützlich sein https://github.com/mailru/FileAPI (ich es nicht selbst nicht genutzt)

haben auch einen Blick auf das SO What to use instead of FileReader for Safari?

+0

Danke !! Lassen Sie mich diese möglichen Lösungen ausprobieren. –

+1

Nun, ich verwende https://github.com/danialfarid/ng-file-upload Direktive, und mit der Shim-Datei und habe den Code erwähnt, wie im Cross-Browser-Support-Teil erwähnt, aber ich kann nicht hochladen Datei auf Safari. –

+0

Gibt es einen Fehler in der Entwicklerkonsole? –

8

beantworte ich vorschlagen das Blob api zu verwenden, ich habe das gleiche Problem gefunden und ich so gelöst:

var html = <svg>whatever on svg </svg> 
var fileName = "myfile.svg"; 
var blob = new Blob([html], {type: 'image/svg'}); 
blob.lastModifiedDate = new Date(); 
// var blobAttrs = {type: "image/svg"}; 
// var file = new File([html], fileName, blobAttrs); 
var formData = new FormData(); 
formData.append("file",blob,fileName); 

Es ist keine "Datei", aber Sie können es verwenden, wie es war.

+0

Danke für die Rettung meines Tages! – Jaison