如何将流星中不同目录的文件下载到客户端浏览器



一个用户来到我的站点并输入一些内容,然后我的站点生成一个文件作为输出。

不幸的是,我无法将生成的文件放在公共目录上——正如你们现在所看到的那样,Meteor每次更改公共文件夹内容时都会重新启动。

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

例如,我有一个位于该目录中的document.pdf,我想将文件下载到我客户的浏览器,让他的浏览器下载这个document.pdf文件。

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

此外,如果您有两个服务器,则请求另一个服务器的数据的可能性很小(例如,如果您使用下载管理器)。

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

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

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

然后看一看这个答案,以获取读取和流式输出文件的示例:Node JS文件使用流下载。

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

相关内容

最新更新