【问题标题】:What the best mode to send a large json to server将大型 json 发送到服务器的最佳模式是什么
【发布时间】:2017-04-02 22:29:07
【问题描述】:
我在我的 web.config 中配置了maxrequestlength = 10MB。但是在我的系统中,有一个导入.csv 的功能,而我的客户导入的这个.csv 可以有多个10MB。所以,我需要一个性能好的模式来发送一个大的json(json导入)。
我想到了zip 或部分发送json。最好的模式是什么?
还有其他更高效的形式吗?
【问题讨论】:
标签:
javascript
c#
json
knockout.js
request
【解决方案1】:
使用文件 API (https://www.html5rocks.com/tutorials/file/dndfiles/),我们可以最大限度地减少上传大文件的工作。该技术是将上传文件分成多个块,为每个部分生成一个 XHR,然后将文件放在服务器上。这类似于 GMail 如此快速地上传大附件的方式。这种技术还可用于绕过 Google App Engine 的 32MB http 请求限制。
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);
})();
这里没有展示的是在服务器上重构文件的代码。
附:当然也可以使用 http://underscorejs.org/#zip 这样的函数。