将图像存储在MongoDB数据库中

如何将图像存储在MongoDB数据库而不是文本中? 我可以在MongoDB数据库中创build一个图像数组吗? 是否有可能做同样的video?

有关存储这些二进制数据的详细信息,请参阅GridFS文档。

对于你的特定语言的支持应该被链接到屏幕的底部。

“你应该总是使用GridFS来存储大于16MB的文件” – 什么时候应该使用GridFS?

MongoDB BSON文档的上限为16 MB。 因此,如果文件数组的总大小小于此值 ,可以使用BinData数据types将它们直接存储在文档中。

video,图像,PDF,电子表格等 – 没关系,它们都是一样的。 这取决于您的应用程序返回一个适当的内容types标题来显示它们。

查看GridFS文档以获取更多细节。

你可以试试这个:

String newFileName = "my-image"; File imageFile = new File("/users/victorhttp://img.dovov.comimage.png"); GridFS gfsPhoto = new GridFS(db, "photo"); GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile); gfsFile.setFilename(newFileName); gfsFile.save(); 

http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb

在NPM上有一个名为mongoose-file的Mongoose插件。 它允许您将文件字段添加到Mongoose模式以进行文件上载。 我从来没有使用过,但它可能是有用的。 如果图像非常小,则可以使用Base64对它们进行编码并将string保存到数据库中。

在没有GridFS的情况下,在NodeJS中使用MongoDB存储一些小的(小于1MB)文件

如果您使用任何脚本语言在MongoDB中存储文件/图像,则可以使用bin数据types。 Bin数据被开发来存储小尺寸的文件。

请参阅您的脚本语言驱动程序。 对于PHP,请点击这里 。

 var upload = multer({dest: "./uploads"}); var mongo = require('mongodb'); var Grid = require("gridfs-stream"); Grid.mongo = mongo; router.post('/:id', upload.array('photos', 200), function(req, res, next){ gfs = Grid(db); var ss = req.files; for(var j=0; j<ss.length; j++){ var originalName = ss[j].originalname; var filename = ss[j].filename; var writestream = gfs.createWriteStream({ filename: originalName }); fs.createReadStream("./uploads/" + filename).pipe(writestream); } }); 

在你看来:

 <form action="/" method="post" enctype="multipart/form-data"> <input type="file" name="photos"> 

有了这个代码,你可以在MongoDB中添加单个和多个图像。

最好的方法来保存图像在nodejs后端 – 专业推荐

 var async = require('async'); var accessPath = path.join(__dirname, "../uploadLocation"); var folderName = new Date().getTime(); async.auto({ makeDir: function(next, results) { makeDir(accessPath, folderName, next); }, writeFile: ['makeDir', function(next, results) { writeFile(accessPath, folderName, req.body.user.ImgData, req.body.user.email, next); }], }, function(err, success) { if (err) { console.log("error occurs while saving image") } else { console.log("success", success) } }); var makeDir = function(accessPath, folderName, next) { try { console.log("accessPath inside makeDir", accessPath, folderName) fs.mkdirSync(accessPath + "/upload/user/" + folderName); next(null, "done") } catch (e) { console.log("error in creating folder"); next(e, "Err") } } var writeFile = function(accessPath, folderName, ImgData, email, next) { var userImgName = email + ".jpg"; fs.writeFile(accessPath + "/upload/user/" + folderName + "/" + userImgName, ImgData, function(err, success) { if (err) { next(e, "Err") } else { console.log("success write file"); next(null, null); } }); }