Hochladen von Dateien mit dem Jquery-Upload-Plugin in JAVA

8

Versuchen Sie, blueimp JQuery Datei-Upload-Plugin zum Hochladen großer Dateien (größer als 1 GB) zu verwenden. Mit der maxChunkSize -Konfiguration gefunden, können Sie den Datei-Upload in Chunks von der Client-Seite aus durchführen. Server können wir Chunk Größe & amp; Dateiname mit Content-Range & amp; Content-Disposition headers.

Mein Server ist Weblogic und schreibender Seitencode in einem Servlet .

Hier sind meine Fragen:

  1. Serverseite: Wie kann man wissen, dass die Anfrage der letzte Brocken ist oder nicht?
  2. Serverseite Wie werden alle empfangenen Chunks in eine einzelne Datei geschrieben?
  3. Wie kann ich feststellen, dass Chunked-Anfragen sich auf dieselbe Datei beziehen, da jeder Chunk als individuelle Anfrage gesendet wird?
Awesome 04.09.2015, 05:35
quelle

2 Antworten

4

Überprüfen Sie das Wiki des Plugins auf GitHub - es hat einen Abschnitt über Chunked File Uploads.

Aus dem Wiki :

  

Das Beispiel PHP-Upload-Handler unterstützt Chunked-Uploads des   Box.

     

Um hochgeladene Uploads zu unterstützen, verwendet der Upload-Handler die    Content-Range-Header , der vom Plugin für jeden übermittelt wird   Brocken.

Überprüfen Sie den oben verlinkten Beispiel-PHP-Code.

  

Serverseite: Wie kann man wissen, dass die Anfrage der letzte Brocken ist oder nicht?

Jeder Header Content-Range request enthält den Bytebereich der Datei, die in dieser Anfrage enthalten ist, sowie die Gesamtanzahl der Bytes der Datei. Sie können also den Endwert des Bereichs anhand der Gesamtanzahl der Bytes überprüfen, um festzustellen, ob die Anforderung den letzten Chunk enthält oder nicht.

Sehen Sie sich das Beispiel in diesem Abschnitt auf der W3C-Website an.

  

Serverseite Wie werden alle empfangenen Chunks-Daten in eine einzelne Datei geschrieben?

Sie können alle Blöcke im Speicher in einem Array sammeln und sie dann in einer Datei in eine Datei schreiben - dies kann jedoch für größere Dateien ineffizient sein. Java IO-API bietet Methoden zum Schreiben in Abschnitte von Dateien durch Bereitstellung eines anfänglichen Offset. Überprüfen Sie diese Frage.

  

Wie kann ich feststellen, dass Chunked-Anfragen sich auf dieselbe Datei beziehen, da jeder Chunk als individuelle Anfrage gesendet wird?

Überprüfen Sie den Header Content-Range in jeder Anfrage - wenn eine Anfrage diesen Header hat, dann ist es eine der vielen Chunk-Upload-Anfragen. Mit dem Wert des Headers können Sie herausfinden, welcher Teil / Abschnitt der Datei in dieser Anfrage enthalten ist.

Außerdem enthält der Header Content-Disposition in der Anfrage den Dateinamen, mit dem Sie verschiedene Anfragen derselben Datei verknüpfen können.

    
nhylated 12.09.2015 03:13
quelle
2

Kann ich mit dem Arbeitscode antworten? Hier sind notwendige Client- und Server-Teile. Siehe Erklärung unten.

Kunde:

%Vor%

WEB_INF / web.xml:

%Vor%

Servlet "FileUploadServlet":

%Vor%

Die Idee besteht darin, Chunks als separate Dateien zu schreiben und sie zu einem Zeitpunkt zu assemblieren, zu dem alle Chunk-Dateien eine gemeinsame Länge haben, die der vollen Dateilänge entspricht. Auf der Client-Seite können Sie beim Upload-Start Eigenschaften definieren (hier wird für uploadId - eindeutige ID für jede Datei). Diese uploadId ist für alle Teile einer Datei gleich. Irgendwelche Fragen? Lass es mich wissen.

[UPDATE] Es gibt zwei Abhängigkeiten: Ссылка und Ссылка .

    
rsutormin 14.09.2015 00:46
quelle

Tags und Links