Answers:
请参阅GridFS文档以获取有关存储此类二进制数据的详细信息。
对特定语言的支持应链接到屏幕底部。
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
NPM上有一个Mongoose插件,称为mongoose-file。它使您可以将文件字段添加到Mongoose模式中以进行文件上传。我从未使用过它,但是它可能被证明是有用的。如果图像很小,则可以对Base64进行编码,然后将字符串保存到数据库中。
在库下面安装
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
连接您的mongo db:
mongoose.connect(‘url_here’);
定义数据库架构
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
使用中间件Multer将照片上传到服务器端。
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
将要求发布到我们的数据库
app.post(‘/api/photo’,function(req,res){
var newItem = new Item();
newItem.img.data = fs.readFileSync(req.files.userPhoto.path)
newItem.img.contentType = ‘image/png’;
newItem.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中添加单个和多个图像。
base64
,请参见stackoverflow.com/questions/11442356我也发现了menge.io/2015/03/24/storing-small-images-in- mongodb是一个很好的起点。