Mithilfe der Datei-APIs (https://www.html5rocks.com/tutorials/file/dndfiles/) können wir die Arbeit zum Hochladen einer großen Datei minimieren. Die Technik besteht darin, den Upload in mehrere Teile zu zerlegen, ein XHR für jeden Teil zu erzeugen und die Datei auf dem Server zusammenzufügen. Dies ist vergleichbar mit dem schnellen Upload großer Anhänge durch Google Mail. Solch eine Technik könnte auch verwendet werden, um das 32-MB-HTTP-Anforderungslimit von Google App Engine zu umgehen.
function upload(blobOrFile) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/server', true);
xhr.onload = function(e) { ... };
xhr.send(blobOrFile);
}
document.querySelector('input[type="file"]').addEventListener('change', function(e) {
var blob = this.files[0];
const BYTES_PER_CHUNK = 1024 * 1024; // 1MB chunk sizes.
const SIZE = blob.size;
var start = 0;
var end = BYTES_PER_CHUNK;
while(start < SIZE) {
upload(blob.slice(start, end));
start = end;
end = start + BYTES_PER_CHUNK;
}
}, false);
})();
Was hier nicht angezeigt wird, ist der Code, um die Datei auf dem Server zu rekonstruieren.
P.S. Natürlich können auch Funktionen wie http://underscorejs.org/#zip verwendet werden.
Ich werde dieses Beispiel testen. Vielen Dank – user3352698