HTML5-Datei-API readAsBinaryString liest Dateien so viel größer, anders als Dateien auf der Festplatte

8

Vollständiger Code unter Ссылка .

Ich benutze die HTML File API und ziehe per Drag & Drop Dateien per XHR-Post in ein PHP-Skript. Verfahrensweise scheint alles in Ordnung zu sein, aber wenn ich versuche, die hochgeladenen Dateien zu öffnen, ist jede Nicht-Text-Datei viel größer als die Quelldatei und wird nicht geöffnet. Es sind eindeutig nicht dieselben Daten wie auf der Quellfestplatte. Textdateien sind jedoch genau gleich und öffnen sich gut.

Einige Beispiele für eine Drag-Drop-Datei mit drei Dateien: Datei 1: Text / XML: auf Diskette 13 KB, hochgeladen 13 KB, funktioniert einwandfrei Datei 2: Bild / PNG: auf Festplatte 14 KB, hochgeladen 18 KB, wird nicht geöffnet Datei 3: Anwendung / XLSX: auf Festplatte 12 KB, hochgeladen 14 KB, wird nicht geöffnet

Es läuft alles darauf hinaus (nachdem xhr-Header eingerichtet sind, das Dateiobjekt bereit ist, usw.):

%Vor%

gibt große, schlechte Daten zurück. Gibt es irgendeinen klaren Fehler?

    
obrienmd 26.05.2011, 04:47
quelle

1 Antwort

25

Dies liegt wahrscheinlich daran, dass Sie die Datei als binäre Zeichenfolge lesen und die multipart/form-data -Anforderung manuell erstellen. Zum einen müssen Sie FileReader nicht verwenden. Da Sie nur den Inhalt senden möchten, verwenden Sie xhr.send(File) oder xhr.send(FormData) . Letzterer erstellt und sendet ein multipart/form-data für Sie:

%Vor%     
ebidel 26.05.2011, 17:42
quelle