express.js多file uploadcallback

我是新来的node.js&express.js,所以…我想上传多个文件,后来与他们合作。 但我需要发送一个响应(好的或错误的状态),所有的文件已经保存在磁盘上,或者如果一个失败 – 然后发送错误callback。

现在我有这样的代码:

var express = require('express'); var router = express.Router(); var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); var fs = require('fs'); router.post('/upload', multipartMiddleware, function(req, res) { var reqBody = req.body; var reqFiles = req.files; saveFile(reqFiles, 'main.xlsx', function(err) { if (err) { res.status(404).send(''); return; } res.send('Multi-File File uploaded'); } }); function saveFile(file, name, callback) { fs.writeFile('./uploads/' + name, file, callback); } 

但我怎么能改变我的代码来parsing这个:

 router.post('/upload', multipartMiddleware, function(req, res) { var reqBody = req.body; var reqFiles = req.files; saveFile(reqFiles['files'][0], 'main.xlsx', function(err) { if (err) { res.status(404).send(''); return; } } saveFile(reqFiles['files'][1], 'second.xlsx', function(err) { if (err) { res.status(404).send(''); return; } } res.send(''); // only after first two fileUploaders have finished }); function saveFile(file, name, callback) { fs.writeFile('./uploads/' + name, file, callback); } 

你需要遍历req.files 。 您可以使用asynchronous库。

例如:

 async.each(req.files, function(file, callback) { saveFile(file, file.name, callback) }, function(err) { res.send('') }) 
  1. 该模块build议不要使用这个。 直接使用多方模块。
  2. 当你有文件列表,他们也将有文件名。 你可以遍历它们并asynchronous保存每个文件。 然后回应。 在这里偷看一下