【问题标题】:Nodejs multi part http downloadNodejs多部分http下载
【发布时间】:2013-10-02 08:06:03
【问题描述】:
在我开发的网络应用程序中,用户可以选择通过浏览器下载大文件。这些文件可以存储在不同的远程存储中,例如 Amazon S3。如果文件下载花费了超过几分钟的时间,那么由于各种原因在服务器端跟踪它的进度会很方便。
因此,Web 应用程序和 node.js API 位于一个位置,而文件可以位于任何位置。我在想的是通过node.js代理文件下载。所以看起来 --> 用户单击 Web 应用程序上的文件下载按钮 --> 节点向 S3 请求文件并将其流式传输给用户并更新数据库以跟踪进度,因为文件大小和发送的数据是已知的。
我想知道的:
- 这在性能方面是否合理?数百个并行下载会杀死普通服务器吗?
- node如何处理多部分下载?
- 这个问题有更好的解决方案吗?
非常感谢您的回答!
【问题讨论】:
标签:
node.js
http
proxy
download
multipart
【解决方案1】:
解决方案 1:最好的方法是直接从您的服务器下载文件。这使您能够观察进度,完全控制并在需要时添加一些功能。您的下载性能取决于您的服务器。
解决方案 2:如果您不想存储文件或不想提供文件,您可以提供指向远程服务器文件的链接 <a href="link_to_the_remote_file">link</a>。对于您的服务器,没有影响,这很好。不过,你还是看不到进度。
因此,无论是您的服务器管理下载,还是远程服务器。两者都有优点和缺点。
但是对于您的服务器,您将需要解析文件。您可以使用模块,但如果您想自己制作(witch 更好),请查看原生的 fs 和 stream 模块和 http protocol。
在另一种情况下,你不需要,你什么都不做。
您的解决方案是:远程服务器向您的服务器提供文件,该服务器向客户端提供服务。
我暂时没有测试过,但您似乎做了两件事:下载和上传。最好是上面的解决方案下载或上传。