【问题标题】: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。所以,我需要一个性能好的模式来发送一个大的jsonjson导入)。

我想到了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 这样的函数。

    【讨论】:

    • 我会测试这个样本。谢谢
    猜你喜欢
    • 2012-03-14
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多