Nam*_*ang 9 tcp file-upload http stream large-files
我只想阐述一下这个问题: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>
Run Code Online (Sandbox Code Playgroud)
当文件很大(即10 GB)时会发生什么?浏览器是否将所有数据放入1个请求,然后将其发送到服务器?只有2 GB RAM时,浏览器如何读取文件并构建请求?
假设文件是CSV。假设服务器的RAM和磁盘空间很小。有没有一种方法可以将文件流式传输到服务器,以便服务器可以解析每一行,而不是将整个文件保留在其RAM或磁盘中?
非常感谢详细的解释(HTTP,TCP等)
小智 3
您可以在这里找到一些详细信息:
简而言之,远程 http 服务器决定了 HTTP POST 的最大大小。任何大于其配置的最大大小的内容,您都会收到错误。
开发自己的解决方案是一种选择。对于大型 CSV 文件的示例,请想象一个发送文件 1 行的 HTTP POST。100 行需要 100 个 HTTP POST。
一个主要缺点是不能直接使用 HTML 表单。也许 JavaScript 可以为您处理这些帖子,例如这篇文章的变体:
如何使用 jQuery 或其他 js 框架将字符串作为文件上传
如果排序很重要(即发送某种序列号作为表单数据的一部分),那么双方都需要做一些工作。
还有其他方法可以实现此目的。但希望上述建议能够引起您的思考。