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



我只是想详细说明这个问题:HTTP文件上传是如何工作的?这是问题中的形式:

<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>

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

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

详细说明(HTTP, TCP等)

您可以在这里找到一些详细信息:

通过html表单上传大文件(大于2gb)

简而言之,远程http服务器决定了http POST的最大大小。任何大于其配置的最大大小,您将收到一个错误。

开发自己的解决方案是一种选择。对于您的大型CSV文件示例,假设使用HTTP POST发送该文件的一行内容。100行需要100个HTTP post。

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

如何用jQuery或其他js框架上传字符串作为文件

如果排序很重要,您将在两边都做一些工作(例如发送某种序列号作为表单数据的一部分)。

还有其他方法可以做到这一点。但希望以上建议能让你有所思考。

相关内容

  • 没有找到相关文章

最新更新