如何在MongoDB数据库中存储图像而不仅仅是文本?我可以在MongoDB数据库中创建一个映像数组吗?在视频上也能做到吗?


当前回答

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中添加单个以及多个映像。

其他回答

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

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

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

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

视频、图片、pdf文件、电子表格等等——没关系,它们都是一样的。这取决于您的应用程序是否返回适当的内容类型头来显示它们。

查看GridFS文档了解更多细节。

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

在NPM上有一个叫做Mongoose -file的插件。它允许您为文件上传添加文件字段到Mongoose Schema。我从未用过它,但它可能有用。 如果图像非常小,你可以用Base64编码它们并将字符串保存到数据库中。

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

你可以试试这个:

String newFileName = "my-image";
File imageFile = new File("/users/victor/images/image.png");
GridFS gfsPhoto = new GridFS(db, "photo");
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
gfsFile.setFilename(newFileName);
gfsFile.save();
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中添加单个以及多个映像。