如何服务或强制从meteor中的不同目录到客户端浏览器的文件下载

时间:2013-12-04 13:32:20

标签: download meteor sendfile

用户访问我的网站并输入内容,我的网站会生成一个文件作为输出。

不幸的是,我无法将生成的文件放在公共目录中 - 因为现在Meteor都会监视这一点并在每次更改公用文件夹内容时重新启动。

所以我生成的文件位于.meteor / local / build / programs / server / files

所以例如我有document.pdf,它位于该目录中,我想提供/强制/触发文件下载到我的客户端的浏览器,让他的浏览器下载这个document.pdf文件。

2 个答案:

答案 0 :(得分:1)

总的来说这不是一个好主意。这使得扩展您的应用非常困难。 Node也不擅长提供大块的静态文件。

然后,如果您有两台服务器,则可能会请求另一台服务器(例如,如果您使用下载管理器)。

我不确定,但我认为在生产模式下(使用meteor deploymeteor bundle时),Meteor的实时代码重新加载无效/关闭

最好的办法是将文件上传到S3,然后将用户重定向到那里的文件。

答案 1 :(得分:1)

您还可以使用Iron Router和服务器端路由创建动态文件下载。 请参阅Iron Router Server Side文档。然后将内容类型设置为application / pdf并直接发回文件而不将其保存到文件系统。如果需要,您也可以将其保存在其他文件夹中并自行提供。

然后看看这个答案,了解一个读入和流出文件的例子: Node JS file downloads using a stream.

由于这是一个服务器端路由,使用express和Iron Router,你不应该弄乱任何与异步问题相关的光纤。