meteor.com上的meteor写文件

时间:2013-11-13 18:14:08

标签: javascript node.js meteor fs

我想将流星应用程序部署到meteor.com。

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

示例代码:

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是捆绑后流星公用文件夹的位置!)

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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