在我开发的网络应用程序中,用户可以选择通过浏览器下载大文件。这些文件可以存储在不同的远程存储中,例如Amazon S3。如果文件下载花费的时间超过几分钟,那么出于各种原因在服务器端跟踪它的进度会很方便。
因此,web应用程序和node.js API位于一个位置,文件可以位于任何位置。我在想的是通过node.js代理文件下载。所以它看起来像 - >用户点击网络应用中的文件下载按钮 - >节点向S3请求文件并将其流式传输给用户并更新数据库以跟踪进度,因为文件大小和发送的数据是已知的。
我想知道的事情:
非常感谢您的回答!
答案 0 :(得分:1)
解决方案1 :最好的方法是直接从服务器下载文件。这使您可以观察进展,获得完全控制并在需要时添加一些功能。您在您的服务器上的下载效果。
解决方案2 :如果您不想存储文件或者您不想提供文件,可以提供指向远程服务器文件的链接<a href="link_to_the_remote_file">link</a>
。对于您的服务器,没有任何影响,这很好。不过,你无法看到进展。
因此,您的服务器要么管理下载,要么管理远程服务器。两者都有利有弊。
但是对于您的服务器,您需要解析该文件。您可以使用模块,但如果您想自己创建模块(女巫更好),请查看本机fs
和stream
模块以及http protocol
。
在另一种情况下,你不需要,你什么都不做。
您的解决方案是:远程服务器为您的服务器提供服务于客户端的文件。 我从未测试过这一刻,但您似乎做了两件事:下载和上传。上面的解决方案是下载或上传的更好。