HTTP文件上传如何处理大文件?

时间:2016-10-10 06:19:48

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

我只是想详细说明这个问题: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等)

1 个答案:

答案 0 :(得分: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

如果排序很重要,你可能需要做一些工作(即将某种序列号作为表格数据的一部分发送)。

还有其他方法可以实现这一目标。但希望上述建议能让你思考。