2013-11-13 6 views
0

Я хочу развернуть приложение метеоритов на meteor.com.Метеор написать файл на 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 в приложении, которое развернуто в метеор?

+0

Можете ли вы рассказать немного больше о том, что вы собираетесь делать с этим файлом, потому что, возможно, есть какое-то решение, которое не требует записи в файл в локальной файловой системе. –

+0

Я хочу изменить размер изображений с помощью imagemagick, а затем переместить их на s3. Проблема с буферизацией изображений в памяти была другой опцией, но, похоже, проблема хранения двоичных данных в переменной js? (для некоторых изображений приложение разбилось) –

+0

Если это так, используйте 'filepicker.io'. Он делает именно то, что вы хотите. –

ответ

1

Большинство провайдеров облачных вычислений не допускают доступа к файловой системе, поскольку это создало бы слишком большие ограничения для архитектуры. Meteor.com не отличается. Для Метеор также возникает проблема, связанная с тем, что dir будет заблокирован движком, поэтому каждое изменение в этой папке приведет к перезапуску сервера (вы также можете увидеть это на своей локальной машине).

Что бы вы ни пытались достичь, существуют разные способы. Наиболее распространенными являются:

  • Используйте внешнюю систему хранения данных, такую ​​как Amazon S3.
  • Просто напишите необходимые вам файлы, как новую коллекцию в базе данных. Очевидно, как это сделать для текстовых файлов, но так же просто для двоичных - просто конвертируйте их в base64.
+0

вопрос о перезапуске сервера на самом деле не соответствует действительности, так как я положил '~' в конце имени файла –

+0

Правильно, я забыл о ~. –

1

Meteor позволяет людям размещать приложения на meteor.com в качестве вежливости, но я согласен с тем, что запись в файловую систему динамически будет представлять угрозу безопасности для них. Вы можете упаковать свое приложение и развернуть его на своем собственном сервере где-нибудь, если это проще, но вы можете переписать сама логика приложения, чтобы сохранить эти данные где-то, кроме одного и того же местоположения вашего приложения (например, S3). Я предполагаю, что вы пытаетесь сохранить изображения или что-то в этом роде. Если это не так, просто используйте хранилища данных Meteor и сохраните их там.

+0

Да, я сохраняю изображения на S3, но храню их в течение короткого времени при изменении размера их на сервере. –

Смежные вопросы