Es gibt ein File
Objekt in JavaScript. Ich möchte eine zu Testzwecken instanziieren.
Ich habe es versucht new File()
, aber ich erhalte den Fehler "Illegaler Konstruktor".
Ist es möglich, eine zu erstellen File
Objekt ?
Referenz des Dateiobjekts : https://developer.mozilla.org/en/DOM/File
javascript
file-upload
upload
julesbou
quelle
quelle
Illegal constructor
auf Chrome 37 / Ubuntu, also nein, es funktioniert nichtfile = new Blob([blobdata], {type: filetype, lastModified: filelastModified}); file.name = filename
Jetzt kannst du!
quelle
new File([], '')
Illegal constructor
auf Chrome 37 / UbuntuVerwenden Sie stattdessen einen Blob
Alternativ gibt es einen Blob , den Sie anstelle von File verwenden können, da er von der File-Schnittstelle gemäß der W3C-Spezifikation abgeleitet ist :
Erstellen Sie den Blob
Wenn Sie den BlobBuilder wie folgt für eine vorhandene JavaScript-Methode verwenden, bei der eine Datei zum Hochladen benötigt
XMLHttpRequest
und ein Blob bereitgestellt wird, funktioniert dies wie folgt :Erweitertes Beispiel
Der Rest des Beispiels ist vollständiger auf jsFiddle verfügbar , wird jedoch nicht erfolgreich hochgeladen, da ich die Upload-Logik nicht langfristig verfügbar machen kann.
quelle
DataTransferItemList.add
erfordertFile
nichtBlob
. Also zur ursprünglichen Frage: Wie instanziiere ich eine Datei ?Jetzt ist es möglich und wird von allen gängigen Browsern unterstützt: https://developer.mozilla.org/en-US/docs/Web/API/File/File
quelle
Die Idee ... So erstellen Sie ein Dateiobjekt (API) in JavaScript für Bilder, die bereits im DOM vorhanden sind:
Tu das nicht! ... (aber ich habe es trotzdem getan)
-> Die Konsole liefert ein Ergebnis ähnlich einer Objektdatei:
Aber die Größe des Objekts ist falsch ...
Warum muss ich das tun?
Zum Beispiel, um ein Bildformular, das bereits während eines Produktupdates hochgeladen wurde, zusammen mit zusätzlichen Bildern, die während des Updates hinzugefügt wurden, erneut zu übertragen
quelle
Da dies Javascript und dynamisch ist, können Sie Ihre eigene Klasse definieren, die der Dateischnittstelle entspricht, und diese stattdessen verwenden.
Ich musste genau das mit dropzone.js tun, weil ich einen Datei-Upload simulieren wollte und er für Dateiobjekte funktioniert.
quelle