Datei mit JavaScript oder jQuery teilen

8

Ich muss einen Teil einer Datei hochladen (nur der erste MB). Ich habe ein PHP-Skript erstellt, das die gesamte Datei hochlädt. Die Daten ( formData Object) werden von einem Ajax-Aufruf übergeben.

Meine Idee wäre jetzt, die Datei mit Javascript (jquery) zu teilen. Gibt es eine Lösung für meine Anfrage?

Aktueller Code:

%Vor%     
Sylnois 21.08.2012, 12:59
quelle

1 Antwort

14

Da Sie FormData verwenden, eine ziemlich neue Technologie, zeige ich Ihnen auch etwas mit neuen Technologien.

Lesen Sie zuerst die Datei mit einem FileReader -Objekt:

%Vor%

Dann können Sie ein Blob für jedes geteilte Teil erstellen ( 1e6 bytes lang):

%Vor%

Schließlich können Sie alle Ihre Blob s zu Ihrem FormData -Objekt hinzufügen:

%Vor%

Sie sollten in Ordnung sein. Ich habe es jedoch nicht getestet.

Ich weiß auch nichts über die Leistung. Sie können auch fr.readAsBinaryString verwenden, wodurch e.target.result zu einer Zeichenfolge wird. Auf diese Weise können Sie die Blob s mit einem einfachen substring / slice / substr / was auch immer erstellen, aber ich befürchte, dass es Probleme mit Unicode-Zeichen und ähnlichem geben könnte. Plus, vielleicht ist es langsamer.

Alles in ein kohärenteres Snippet einfügen:

%Vor%

Hinweis : FormData.append verwendet einen dritten optionalen Parameter, der im Fall von File oder Blob -Werten der Name der Datei sein sollte. Wenn nicht angegeben, kann Blob s unvorhersehbare zufällige Dateinamen erhalten.

Wahrscheinlich ist dieser Parameter kein Standard, und er wird nicht in MDN artice , aber ich habe es trotzdem oben im Snippet verwendet. Wie auch immer, wenn Sie wissen, was Sie tun, können Sie mehrere Optionen haben, um den Dateinamen anzugeben. Zum Beispiel mit formData.append("filename", file.name) oder Senden eines benutzerdefinierten Headers in der Anfrage.

    
MaxArt 21.08.2012, 13:53
quelle

Tags und Links