Nodejs多部分http下载

时间:2013-10-02 08:06:04

标签: node.js http proxy download multipart

在我开发的网络应用程序中,用户可以选择通过浏览器下载大文件。这些文件可以存储在不同的远程存储中,例如Amazon S3。如果文件下载花费的时间超过几分钟,那么出于各种原因在服务器端跟踪它的进度会很方便。

因此,web应用程序和node.js API位于一个位置,文件可以位于任何位置。我在想的是通过node.js代理文件下载。所以它看起来像 - >用户点击网络应用中的文件下载按钮 - >节点向S3请求文件并将其流式传输给用户并更新数据库以跟踪进度,因为文件大小和发送的数据是已知的。

我想知道的事情:

  1. 在表现方面是否合理?数百个并行下载是否会杀死普通服务器?
  2. 如何使用节点处理多部分下载?
  3. 这个问题有更好的解决方案吗?
  4. 非常感谢您的回答!

1 个答案:

答案 0 :(得分:1)

解决方案1 ​​:最好的方法是直接从服务器下载文件。这使您可以观察进展,获得完全控制并在需要时添加一些功能。您在您的服务器上的下载效果。

解决方案2 :如果您不想存储文件或者您不想提供文件,可以提供指向远程服务器文件的链接<a href="link_to_the_remote_file">link</a> 。对于您的服务器,没有任何影响,这很好。不过,你无法看到进展。

因此,您的服务器要么管理下载,要么管理远程服务器。两者都有利有弊。 但是对于您的服务器,您需要解析该文件。您可以使用模块,但如果您想自己创建模块(女巫更好),请查看本机fsstream模块以及http protocol。 在另一种情况下,你不需要,你什么都不做。

您的解决方案是:远程服务器为您的服务器提供服务于客户端的文件。 我从未测试过这一刻,但您似乎做了两件事:下载上传。上面的解决方案是下载或上传的更好。