如何上传文件并使用GridFS将其直接保存到MongoDB

时间:2012-11-29 07:46:54

标签: ruby mongodb sinatra gridfs

我有一个在heroku上托管的Sinatra应用程序,我正在尝试启用文件上传。我知道heroku不允许保存到文件系统,所以我试图直接使用GridFS将图像保存到MongoDB。但我不知道怎么做。 使用下面的代码,我可以保存到文件系统

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?

3 个答案:

答案 0 :(得分:4)

您可以使用GridFS API基本上执行上述操作,但写入MongoDB:http://api.mongodb.org/ruby/current/Mongo/GridFileSystem.html#open-instance_method

答案 1 :(得分:0)

我认为您需要将文件作为二进制数据上传到数据库。 您可以使用PaperClip上传文件,然后将它们作为二进制文件存储到MangoDB中。 这里this link可能会帮助你:

答案 2 :(得分:0)

如果文件实际上小于16 mb,请尝试使用此Converter将jpeg / png格式的图像更改为保存为mongodb的格式,您可以将其视为gridfs的简单替代方法

请关注此github存储库以获取更多详细信息

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