2

我有一个托管在 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?

4

3 回答 3

4

您可以使用 GridFS API 基本上完成您在上面所做的事情,但写入 MongoDB:http ://api.mongodb.org/ruby/current/Mongo/GridFileSystem.html#open-instance_method 。

于 2012-12-07T15:57:21.827 回答
0

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

于 2012-11-29T08:07:56.730 回答
0

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

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

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

于 2020-05-31T04:13:22.160 回答