【发布时间】:2014-12-01 03:05:21
【问题描述】:
我正在尝试编写一些 HTML/JS 代码,以方便将大文件(多 GB)上传到远程服务器。以前我们一直在使用 Flash 上传器,它在单个网络请求中上传给定的文件。闪存会打开一个网络连接,将一个文件的一个块读入内存,然后将该块写入网络连接,然后抓取下一个块,然后写入网络等等,直到整个文件被上传。这样做是因为大多数 Web 浏览器会在尝试上传之前尝试将整个文件读入内存。在处理多 GB 文件时,这实际上会使客户端系统崩溃,因为它使用了所有客户端内存。现在我们在使用 flash 时遇到了问题,所以它需要去,我们想替换它而不需要修改现有的服务器端代码。
对 jquery 上传器的一些谷歌搜索表明,有很多支持“分块”的库,但它们在多个请求上“分块”。我们不想通过多个网络请求对文件进行分块,我们只希望 JS 在将文件写入单个网络连接时分块读取文件。
有人知道可以开箱即用的库吗?
如果需要,我们不反对修改现有库。任何人都有类似于以下伪代码的 sn-p,我可以将其改装到库中吗?
connection = fopen(...);
fputs("123", connection);
... some unrelated code ...
fputs("456", connection);
fclose(connection);
(请原谅我在伪 JS 代码中使用 C 函数……我知道这不是你在 JS 中的做法,我只是在低级别演示我想如何写入网络连接的流程在关闭之前)
注意:我们并不是要“现代化”或广泛改进这个项目——我们不是要重新做这个项目。我们有一些已经存在多年的旧代码,我们希望对服务器端代码进行尽可能少的更改。我有更重要的项目要现代化并提高效率——我们只需要开展这项工作。请不要建议我在服务器端实施“适当的”文件分块——这是我的建议,如果我的建议被采纳,那么该任务将被分配给不同的开发人员。现在不在我的控制范围内,请这是一个仅限客户端的修复程序!
谢谢,让您头疼了!
【问题讨论】:
-
如果你想要一个连接,尝试使用 web socket 并传输块
标签: javascript jquery ajax networking file-upload