用户访问我的网站并输入内容,我的网站会生成一个文件作为输出。
不幸的是,我无法将生成的文件放在公共目录中 - 因为现在Meteor都会监视这一点并在每次更改公用文件夹内容时重新启动。
所以我生成的文件位于.meteor / local / build / programs / server / files
所以例如我有document.pdf,它位于该目录中,我想提供/强制/触发文件下载到我的客户端的浏览器,让他的浏览器下载这个document.pdf文件。
答案 0 :(得分:1)
总的来说这不是一个好主意。这使得扩展您的应用非常困难。 Node也不擅长提供大块的静态文件。
然后,如果您有两台服务器,则可能会请求另一台服务器(例如,如果您使用下载管理器)。
我不确定,但我认为在生产模式下(使用meteor deploy
或meteor bundle
时),Meteor的实时代码重新加载无效/关闭
最好的办法是将文件上传到S3,然后将用户重定向到那里的文件。
答案 1 :(得分:1)
您还可以使用Iron Router和服务器端路由创建动态文件下载。 请参阅Iron Router Server Side文档。然后将内容类型设置为application / pdf并直接发回文件而不将其保存到文件系统。如果需要,您也可以将其保存在其他文件夹中并自行提供。
然后看看这个答案,了解一个读入和流出文件的例子: Node JS file downloads using a stream.
由于这是一个服务器端路由,使用express和Iron Router,你不应该弄乱任何与异步问题相关的光纤。