首页 > 解决方案 > 如何将多张图片上传到 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 的好技巧

标签: mongodbmultergridfs

解决方案


推荐阅读