【问题标题】:How does HTTP file upload work for large files?HTTP 文件上传如何处理大文件?
【发布时间】:2017-02-18 12:32:59
【问题描述】:

我只想详细说明这个问题:How does HTTP file upload work?。这是问题的形式:

<form enctype="multipart/form-data" action="http://localhost:3000/upload?upload_progress_id=12344" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

当文件非常大(即 10 GB)时会发生什么?浏览器是否将所有数据放入 1 个请求中,然后将其发送到服务器? 当浏览器只有 2 GB 的 RAM 时,它如何读取文件并构建请求?

假设文件是​​ CSV。假设服务器的 RAM 和磁盘空间很小。有没有办法将文件流式传输到服务器,以便服务器可以解析每一行而不是将整个文件保存在其 RAM 或磁盘中?

非常感谢详细的解释(HTTP、TCP 等)

【问题讨论】:

    标签: http file-upload tcp stream large-files


    【解决方案1】:

    你可以在这里找到一些细节:

    Large file upload though html form (more than 2 GB)

    简而言之,远程 http 服务器决定了 HTTP POST 的最大大小。任何大于其配置的最大大小的内容,您都会收到错误消息。

    开发自己的解决方案是一种选择。对于您的大型 CSV 文件示例,想象一个发送 1 行文件的 HTTP POST。 100 行需要 100 个 HTTP POST。

    一个主要的缺点是不能直接使用 HTML 表单。也许 JavaScript 可以为您处理帖子,例如这篇帖子的变体:

    How to upload string as file with jQuery or other js framework

    如果排序很重要(即发送某种序列号作为表单数据的一部分),那么双方都需要做一些工作。

    还有其他方法可以做到这一点。但希望以上建议能引起您的思考。

    【讨论】:

      猜你喜欢
      • 2013-10-16
      • 2010-09-14
      • 2010-12-30
      • 2010-12-28
      • 1970-01-01
      • 2013-07-09
      • 2012-04-17
      • 2014-03-03
      相关资源
      最近更新 更多