mongodb - 如何将多张图片上传到 mongoDB?
问题描述
我成功编码将图像上传上传到 MongoDB。但现在我想将多张图片上传到数据库中。我使用了gridFS和multer。有人可以帮我解决这个问题吗
// Create Storage engine
var storage = new GridFsStorage({
url: Mongo,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads',
metadata: {'username': req.body.username}
};
resolve(fileInfo);
});
});
}
});
const upload = multer({ storage });
/*--------------------------------------------------------*/
app.get('/',(req,res)=>{
gfs.files.find().toArray((err,files)=>{
// Check if Files
if(!files || files.length ===0)
{
res.render('index',{files:false});
} else{
files.map(file=>{
if(file.contentType === 'image/jpeg' || file.contentType ===
'image/png')
{
file.isImage = true;
} else {
file.isImage = false;
}
});
res.render('index',{files:files});
}
});
});
/*----------------------------------------------------*/
// Display Image
app.get('/image/:filename', (req,res)=>{
gfs.files.findOne({filename: req.params.filename}, (req,file) =>{
// Check if File
if(!file || file.length ===0)
{
return res.status(404).json({
err: 'No files exist'
});
}
// Check if image
if(file.contentType === 'image/jpeg' || file.contentType === 'image/png')
{
// Read output tp browser
var readstream = gfs.createReadStream(file.filename);
readstream.pipe(res);
}
else
{
res.status(404).json({
err: 'Not an image'
});
}
});
});
我附上了与图片上传相关的代码部分。请检查此代码并提供一个将多个图像上传到 mongoDB 的好技巧
解决方案
推荐阅读
- css - 如何在 CSS 中创建包含 8 个图像的 2 行网格
- python - 如何使一行中的最后一项成为字典的键,并将前面的项目保存为列表
- python - 创建删除用户单元测试 Django rest_framework
- c# - 有什么理由不总是使用 DecompressionMethods.All 吗?
- javascript - “对象”类型上不存在属性“管理员”
- bash - Bash pipe:获取管道中前一个进程的退出状态
- sql - 当变量使用大小写时,“<”附近出现无效语法错误,没有变量也能正常工作
- node.js - 外部 npm 包的 Typescript 声明文件 - 构造函数
- c++ - 访问 C++ 中所有结构的变量
- java - Java Socket InputStream 读取数据但返回顺序错误