Wie werden Dateiuploads auf dem Server gehandhabt (Plupload / Spring MVC)?

8

Auf unserem Client ist es möglich, große Dateien hochzuladen. Wir möchten Chunking verwenden, um die Größe der Anfragen zu reduzieren. Wir verwenden Plupload , so dass es einfach ist, die Dateien in Chunks hochzuladen. Ich bin mir jedoch nicht sicher, wie ich mit den Brocken umgehen soll. Wir verwenden Spring MVC auf dem Server, und ich habe derzeit folgende für meine Controller-Methode: uploadMedia(@RequestBody MultipartFile file) wobei MultipartFile ist org.springframework.web.multipart.MultipartFile . Das funktioniert gut, wenn Sie nicht chunking machen. Wenn ich das Chunking auf der Client-Seite aktiviere, kommt es immer noch gut in diese Methode, aber ich sehe nichts in der Datei, die übergeben wird, die angibt, zu welcher Datei der Chunk gehört. Hoffentlich verpasse ich gerade etwas.

Es scheint, als ob dies ein allgemeiner Arbeitsablauf ist, aber ich kann keine guten Beispiele dafür finden, wie dies auf der Serverseite gemacht wird. Eine Lösung mit nur Spring wäre großartig, aber wenn eine andere Bibliothek benötigt wird, ist das auch in Ordnung. Ich habe mir etwas Apache Commons FileUpload angesehen, aber ich konnte dort nichts finden. Jede Hilfe dabei wäre großartig. Danke.

    
dnc253 20.11.2012, 04:27
quelle

1 Antwort

8

Ich debuggte noch mehr und fügte meiner Controller-Methode ein HttpServletRequest hinzu, um zu sehen, ob dort etwas vorhanden war. Ich fand, dass die Anfrage, die ich erhielt, ein org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest war, das ein Feld hat, das multipartParameters genannt wird, das gerade ein HashMap ist. Ich fand, dass diese Karte Schlüssel von name , chunks und chunk hatte. Also habe ich beschlossen, folgendes als meine Unterschrift zu versuchen:

%Vor%

Tatsächlich wurden diese @RequestParam -Parameter mit dem Namen der Datei, der Anzahl der Chunks bzw. der Chunk-Nummer (nullbasiert) ausgefüllt. Diese Information bei jeder Anfrage zu haben, wird es ziemlich einfach machen, die Chunks in der endgültigen Datei zusammenzustellen.

Es ist auch wichtig zu wissen, dass die Parameter chunks und chunk nicht gesendet werden müssen, wenn die Datei nicht chunked werden muss (die Dateigröße ist kleiner als die Chunk-Größe). Also, meine endgültige Unterschrift endete so:

%Vor%

Dann kann ich nach -1 suchen, um zu sehen, ob ich mich überhaupt um Chunking kümmern muss.

Also, in der Controller-Methode selbst habe ich so etwas:

%Vor%     
dnc253 20.11.2012, 06:22
quelle