2016-11-14 31 views
0
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,我可以爲一個圖像創建寫入和讀取流,但丟失了兩個文件的想法。多上傳到mongodb gfs

我可以管一個圖像,但不是兩個。當我嘗試陣列medthod,它回信

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

我的目標是上傳兩個文件在一個方法或什麼都一下子MongoDB的。我怎樣才能做到這一點?

回答

1

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 
     } 
    }); 
}); 
+0

我明白你的意思。但我不知道該怎麼做。你能給我一些線索或例子嗎? –

+0

當然,如果你仍然不明白,我更新了代碼的答案,我在這裏解釋 –

0
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)=> { 方法它回覆不能發佈錯誤,它也顯示語法錯誤。
  • 你在哪裏使用app.post方法。
  • 如果您不介意,可否請您填寫完整的代碼,如果不是,請填寫 。