我只想详细说明这个问题: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 等)
最佳答案
您可以在这里找到一些详细信息:
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
如果排序很重要(即发送某种序列号作为表单数据的一部分),您需要在两边做一些工作。
还有其他方法可以做到这一点。但希望以上建议能让您思考。
关于http - HTTP 文件上传如何处理大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39952308/