如何在MongoDB数据库中存储图像而不仅仅是文本?我可以在MongoDB数据库中创建一个映像数组吗?在视频上也能做到吗?
当前回答
安装以下库
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;
},
}));
Post req到我们的数据库
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();
});
其他回答
有关存储此类二进制数据的详细信息,请参阅GridFS文档。
对特定语言的支持应该链接到屏幕底部。
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中添加单个以及多个映像。
你能在MongoDB中存储文件吗?
Yes.
应该在MongoDB中存储文件吗?
No.
MongoDB不是一个存储文件的好地方。如果您想存储文件,您应该使用Amazon S3或谷歌Could Storage这样的存储。
好的做法是将文件存储在存储器中,然后将上传的图像的URI保存在MongoDB中。
“你应该总是使用GridFS存储大于16MB的文件”-我什么时候应该使用GridFS?
MongoDB BSON文档的上限为16mb。因此,如果您的文件数组的总大小小于这个值,您可以使用BinData数据类型将它们直接存储在文档中。
视频、图片、pdf文件、电子表格等等——没关系,它们都是一样的。这取决于您的应用程序是否返回适当的内容类型头来显示它们。
查看GridFS文档了解更多细节。
如果您正在使用任何脚本语言在MongoDB中存储文件/图像,则可以使用bin数据类型。Bin数据是为存储小文件而开发的。
参考脚本语言驱动程序。对于PHP,请单击这里。
推荐文章
- 如何从命令行在windows中找到mysql数据目录
- 如何找到MySQL的根密码
- MongoDB:如何找到安装的MongoDB的确切版本
- 将表从一个数据库复制到另一个数据库的最简单方法?
- 如何使用mongoimport导入CSV文件?
- 什么是分片,为什么它很重要?
- 在mongodb中存储日期/时间的最佳方法
- 数据库触发器是必要的吗?
- 如何排序mongodb与pymongo
- 如何在mongodb上导入。bson文件格式
- 为什么我应该使用基于文档的数据库而不是关系数据库?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 将值从同一表中的一列复制到另一列
- 什么是数据库池?
- 关于数据库,每个开发人员应该知道些什么?