0

我想将流星应用程序部署到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 文件?

4

2 回答 2

1

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

于 2013-11-13T20:15:35.850 回答
1

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

无论你想达到什么目标,都有不同的方法。最常见的是:

  • 使用外部存储系统,例如 Amazon S3。
  • 简单地说,将您需要的文件作为数据库中的新集合写入。很明显,如何对文本文件执行此操作,但对二进制文件同样简单——只需将它们转换为 base64。
于 2013-11-13T20:18:20.160 回答