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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用GridFS上传文件并将其直接保存到MongoDB中相关的知识,希望对你有一定的参考价值。

我在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而不先保存到文件系统?

答案

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

另一答案

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

另一答案

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

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

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

以上是关于如何使用GridFS上传文件并将其直接保存到MongoDB中的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 文件上传(Express 4、MongoDB、GridFS、GridFS-Stream)

我如何从环回 4 上传到 MongoDB GridFS

使用 GridFs 从 mongoDB 读取和显示图像

如何使用 mean.js 上传图像并将其保存到数据库(猫鼬)

如何上传图像并将其保存在数据库中? [复制]

在 React(客户端)中上传 .json 文件并将其发送到 Node(服务器端)