2016-10-27 7 views
0

Ist Upload mit Chunks und MultipartFile laden same.Was macht den Unterschied? Ich habe versucht, mit Multipartdatei hochladen. Meine Anforderung ist es, eine Datei von 50 mb Appx auf den Server hochzuladen, ohne den Benutzer für lange Zeit zu warten. es dauert etwa 2 Minuten.Fileupload mit Chunks und MultipartFileupload

Antwort

2

Chunks und Mehrteiliger tun das gleiche in einer anderen Art und Weise

Chunks den Upload „Splitting“ die ganze Datei in kleine Stücke (chunks) machen

Diese sehr große Datei splitten kann (auch 1 GB) in kleinere Teile und senden Sie sie an den Server, ohne dass das Verbindungszeitlimit in einem Browser auftritt; es ist dann bis zu der Server-Seite Verarbeitung der Stücke

Sie mehr JS Upload-Bibliotheken für die Stücke verwenden können (z https://blueimp.github.io/jQuery-File-Upload/ oder http://www.plupload.com/ usw.)

Mehrteiliger, stattdessen lädt die Datei in einem Schuss; wenn die Datei 1MB umso 1MB hochgeladen, wenn es 1 GB ist die ganze 1GB

In Bezug auf die Übertragungsgeschwindigkeit erraten geladen ich es etwas ist, in Bezug auf die Bandbreite und Internetverbindung

Ich hoffe, das Ihnen helfen kann

Server-Seite CHUNKS MANAGEMENT SAMPLE

Wie ich Ihnen es bis zu der Server-Seite ist gesagt Brocken zu verwalten; Ich würde stark vermeiden, in Speicher-Chunks zu speichern, weil Sie eine riesige Menge an Speicher reservieren sollten (wenn die Datei 1 GB ist, sollten Sie 1 GB zuweisen und dies für jeden Upload)

In meinem alten Projekt habe ich plupload verwendet und dies ist ein Extrakt aus, wie ich die Stücke auf Serverseite verwaltet (Anmerkung: Code erfolgt durch Verwendung von Spring)

RequestMapping(method = { RequestMethod.POST }, value = { "/plupload" }) 
public ResponseEntity<List<UploadMediaResultDto>> uploadMedia(
       @RequestParam(required = true, value = "file") MultipartFile file, 
       @RequestParam(required = false, value = "name") String name, 
       @RequestParam(required = false, value = "chunks") Integer chunks, 
       @RequestParam(required = false, value = "chunk") Integer chunk) 
{ 
boolean fullFile = false; 
File theFile = new File(filePath); 
if (chunk != null && chunks != null && (chunk == 0 && chunks == 1)) 
{ 
    fullFile = true; 
} 
if (!fullFile) 
{ 
FileUtils.writeByteArrayToFile(theFile, file.getBytes(), append); 
} 
else 
{ 
FileUtils.writeByteArrayToFile(theFile, file.getBytes()); 
} 
} 

wie Sie zuerst sehen, kann ich überprüfen, ob ich die ganze Datei oder nicht empfangen; wenn nicht ich die Datei im Append-Modus schreiben sonst schreibe ich in es insgesamt

Ich hoffe, dass dies nützlich

Angelo

+0

Danke für die clarification.How es ist nur in den Server für Brocken sein. Sollte es für jeden Chunk eine Persistenz geben oder kann er gespeichert werden, nachdem alle Chunks übertragen wurden? – Sridhar

+0

Ich habe die Antwort aktualisiert; Ich hoffe, dass der kleine Beispielcode Ihnen nützlich ist –

+0

yeah das ist großartig. Danke angelo. Meine Absicht ist es als Anhang zu senden. ich werde es nirgends speichern. Können Sie bitte in diesem Fall vorschlagen, wie Sie es erreichen können? – Sridhar