express.js 多文件上传回调

express.js multiple file upload callback

我是 node.js 和 express.js 的新手,所以...我想上传多个文件,稍后再使用它们。 但是我需要在我的所有文件都保存在磁盘上之后发送一个响应(正常或错误状态),或者如果一个失败 - 然后发送一个错误回调。

现在我有这样的代码:

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

但是我怎样才能更改我的代码来解析这个:

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。您可以使用 async 库。

例如:

async.each(req.files, function(file, callback) {
  saveFile(file, file.name, callback)
}, function(err) {
  res.send('')
})
  1. 模块不建议使用这个。直接使用多方模块。
  2. 当您有文件列表时,它们也会有文件名。您可以遍历这些文件并异步保存每个文件。然后回应。快来看看here