流星写入文件 meteor.com

meteor write file on meteor.com

本文关键字:meteor com 文件 流星      更新时间:2023-09-26

我想部署一个流星应用程序来 meteor.com。

不幸的是,我必须将一些tmp文件写入流星的公共文件夹。

示例代码:

var fs = Npm.require('fs');
var filepath = "../../../../../public/resizing/tmp~";
fs.open(localpath, 'w', function(err,fd)
{
   if(err) throw "error opening file";
   fs.close(fd,function(){});
}

../../../../../public是捆绑后流星公共文件夹的位置!

这在我的本地计算机上工作正常,因为我在公用文件夹中具有写入权限。有没有办法在部署到流星的应用程序中写入 tmp 文件?

大多数云提供商不允许访问文件系统,因为这会对架构施加太多限制。 Meteor.com 也不例外。对于 Meteor,还存在引擎预缓存/public目录的问题,因此对该文件夹的每次更改都会导致服务器重新启动(您也可以在本地机器上看到这一点)。

无论您想要实现什么,都有不同的方法。最常见的是:

  • 使用外部存储系统,例如 Amazon S3。
  • 只需将所需的文件作为新集合写入数据库即可。很明显,如何为文本文件执行此操作,但对于二进制文件来说也很容易 - 只需将它们转换为base64即可。

Meteor 允许人们出于礼貌将应用程序部署到 meteor.com,但我同意动态写入文件系统对他们来说是一种安全风险。如果这样更容易,您可以打包应用程序并将其部署到您自己的服务器,但您可能希望重写应用程序逻辑本身,以将数据保存在应用程序相同位置(例如 S3)以外的其他位置。我假设您正在尝试存储图像或其他东西。如果不是,只需使用 Meteor 的数据存储并将其保留在那里即可。