多上传到 mongodb gfs

multi upload to mongodb gfs

app.post("/", upload.single("avatar"), function(req, res, next){
    var writestream = gfs.createWriteStream({
        filename: req.file.filename
    });  
    fs.createReadStream("./uploads/kkm/" + req.file.filename)    
      .on("end", function() {
          fs.unlink("./uploads/kkm/"+ req.file.filename, function(err) {
              res.send("success") 
          })
      })  
      .pipe(writestream);    
});

我想上传 2 张图片到 mongodb,我可以为一张图片创建写入和读取流,但对两个文件失去了主意。

我可以用管道输送一张图片,但不能输送两张图片。当我尝试数组方法时,它回复

"TypeError: Cannot read property 'filename' of undefined" ERROR.

我的目标是用一种方法或其他方法同时将两个文件上传到 mongodb。我怎样才能做到这一点?

GridFS 方法每次调用插入一个文件,但您可以轻松实现。您需要在 Node.JS 应用程序中使用循环并将文件一个一个地发送到 GridFS。

如果你使用 multer,你可以这样做

const storage = multer.diskStorage({
    destination: (req, file, callback) => {
        callback(null, './.temp/uploads');
    },
    filename: (req, file, callback) => {
        callback(null, file.fieldname + '-' + Date.now());
    }
});
const multerOptions = {
    storage: storage
};

const upload = multer(multerOptions).array('files[]');

module.exports = (req, res, next) => {
  upload(req, res, (err) => {
        for (let i in req.files) {
            const file = req.files[i];
            // here you can call GridFS method and upload the file
        }
  });
}); 
 app.post('/upload', function(request, response) {
  upload(request, response, function(err) {  

 var files = new Array (req.file.filename,req.file.namedName) 
    for(var i = 0 ; i < files.length; i++) 
{ 
// here you can call GridFS method 
 }
});
  • 感谢@Ariel Henryson 的帮助。
  • 我按照我的方式循环并且有效。
  • 我多次尝试你的方法。
  • 我不知道如何使用 module.exports = (req, res, next) => { 它回复的方法不能 post 错误,它也显示语法错误。
  • 你在哪里使用app.post方法。
  • 如果你不介意,请你写完整的代码,没关系 如果没有。