如何在MongoDB数据库中存储图像而不仅仅是文本?我可以在MongoDB数据库中创建一个映像数组吗?在视频上也能做到吗?
当前回答
有关存储此类二进制数据的详细信息,请参阅GridFS文档。
对特定语言的支持应该链接到屏幕底部。
其他回答
有关存储此类二进制数据的详细信息,请参阅GridFS文档。
对特定语言的支持应该链接到屏幕底部。
安装以下库
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();
});
如果您正在使用任何脚本语言在MongoDB中存储文件/图像,则可以使用bin数据类型。Bin数据是为存储小文件而开发的。
参考脚本语言驱动程序。对于PHP,请单击这里。
“你应该总是使用GridFS存储大于16MB的文件”-我什么时候应该使用GridFS?
MongoDB BSON文档的上限为16mb。因此,如果您的文件数组的总大小小于这个值,您可以使用BinData数据类型将它们直接存储在文档中。
视频、图片、pdf文件、电子表格等等——没关系,它们都是一样的。这取决于您的应用程序是否返回适当的内容类型头来显示它们。
查看GridFS文档了解更多细节。
你可以试试这个:
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();
推荐文章
- 将映像存储在MongoDB数据库中
- 重复Mongo ObjectId的可能性在两个不同的集合中生成?
- 字符串作为SQL数据库的主键
- Redis比mongoDB快多少?
- 比较两个SQL Server数据库(模式和数据)的最佳工具是什么?
- 如何检查一个表是否存在于给定的模式中
- 无法连接到服务器127.0.0.1:27017
- 如何在SQL Server Management Studio中查看查询历史
- 如何创建数据库的MongoDB转储?
- 如何将MongoDB作为Windows服务运行?
- 如何监听MongoDB集合的变化?
- 多语言数据库设计的最佳实践是什么?
- 什么时候不使用Cassandra?
- my.cnf文件在macOS上的位置
- 我如何得到“id”后插入到MySQL数据库与Python?