Как загрузить файл и сохранить его непосредственно в MongoDB с помощью GridFS

У меня есть приложение Sinatra, размещенное на героку, и я пытаюсь включить загрузку файлов. Я знаю, что heroku не позволяет сохранять в файловую систему, поэтому я пытаюсь сохранить изображение в MongoDB напрямую с помощью GridFS. Но я не знаю как. Используя приведенный ниже код, я могу сохранить в файловую систему

base_dir = Dir.pwd + "/static/images/channels/"
File.open("#{base_dir}" + params['logo'][:filename], "w") do |f|
  f.write(params['logo'][:tempfile].read)
end

Как сохранить файл непосредственно в MongoDB без предварительного сохранения в файловой системе?


person jokham    schedule 29.11.2012    source источник


Ответы (3)


Вы можете использовать API GridFS, чтобы в основном делать то, что вы делаете выше, но напишите в MongoDB: http://api.mongodb.org/ruby/current/Mongo/GridFileSystem.html#open-instance_method.

person kristina    schedule 07.12.2012

Я думаю, вам нужно загрузить файл как двоичные данные в базу данных. Вы можете использовать PaperClip для загрузки файлов, а затем сохранить их как двоичные файлы в MangoDB. здесь эта ссылка может вам помочь вне:

person tokhi    schedule 29.11.2012

Если ваши файлы на самом деле меньше 16 мб, попробуйте использовать этот конвертер, который меняет изображение формата jpeg/png на формат сохранения в mongodb, и вы можете увидеть это как легкую альтернативу для gridfs,

пожалуйста, следуйте этому репозиторию github для более подробной информации

https://github.com/saran-surya/Mongo-Image-Converter

person SARAN SURYA    schedule 31.05.2020