0

一个用户来到我的站点并输入一些东西,我的站点生成一个文件作为输出。

不幸的是,我无法将生成的文件放在公共目录中——因为你们现在 Meteor 都会看到这个并在每次更改公共文件夹内容时重新启动。

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

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

4

2 回答 2

1

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

然后看一下这个答案,以获取读入和流式传输文件的示例: Node JS file downloads using a stream。

由于这是一个服务器端路由,使用 express 和 Iron Router,您不必处理任何与 Fiber 相关的异步问题。

于 2014-01-14T08:46:01.003 回答
1

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

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

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

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

于 2013-12-04T14:17:23.200 回答