2016-11-19 1 views
0

zu senden Ich habe in meiner web.config mit maxrequestlength = 10MB konfiguriert. Aber in meinem System gibt es eine Funktionalität von .csv importieren und diese .csv, dass meine Kunden importieren können mehr als 10MB haben. Also, ich brauche einen Modus mit einer guten Leistung, um eine große json (die json importiert) zu senden.Was ist der beste Modus, um einen großen JSON an den Server

Ich dachte an zip oder senden Sie die json in Teilen. Was ist der beste Modus?

Gibt es andere Formen effizienter?

Antwort

1

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.

+0

Ich werde dieses Beispiel testen. Vielen Dank – user3352698

Verwandte Themen