javascript - express.js 多文件上传回调

标签 javascript node.js express multipartform-data

我是 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('')
})

关于javascript - express.js 多文件上传回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140829/

相关文章:

javascript - 如何处理路径遍历?

Node.js 使用 nodemailer 发送带有图像附件的电子邮件

javascript - 使用 String.search 时出错 ("sinh(2") : "Invalid regular expression"

javascript - 为什么有多个不带参数的对象方法?

asp.net - 服务器向 Web 客户端发送消息的最佳方式是什么?

javascript - 在mongodb中将字符串转换为日期?

Javascript:使用 new 创建字符串是否意味着我需要稍后发布它?

javascript - ESLint - 'process' 未定义

javascript - 仅定义 mongoose 和 Schema

node.js - 如何访问 express.js 中的 ejs 对象