Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript express.js多文件上传回调_Javascript_Node.js_Express_Multipartform Data - Fatal编程技术网

Javascript express.js多文件上传回调

Javascript express.js多文件上传回调,javascript,node.js,express,multipartform-data,Javascript,Node.js,Express,Multipartform Data,我是node.js和express.js的新手,所以。。。我想上传多个文件,以后再使用它们。 但我需要在我的所有文件都保存在磁盘上后发送一个响应(确定或错误状态),或者如果其中一个文件失败,则发送一个错误回调 现在我有了这样的代码: var express = require('express'); var router = express.Router(); var multipart = require('connect-multiparty'); var multipartMiddlew

我是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.each(req.files, function(file, callback) {
  saveFile(file, file.name, callback)
}, function(err) {
  res.send('')
})
  • 模块建议不要使用此选项。直接使用多方模块
  • 当您有文件列表时,它们也会有文件名。您可以循环这些文件并异步保存每个文件。然后回答。偷看

  • async
    函数的回调中,我应该在哪里用
    ok
    status?进行响应。我有
    res.send(“”)
    基本上它所做的是对每个文件调用
    (file,callback)
    的初始回调。处理完所有文件后,将调用带有
    res.send(“”)
    的最终回调,您也可以处理最终回调中的错误。
    var express=require('express');var router=express.router();var multiparty=require(“多方”);var fs=需要('fs');var async=require(“异步”)
    router.post('/upload',function(req,res){var form=new multiparty.form();form.parse(req,function(err,fields,files){async.each(files,function(file,callback){saveFile(file[0],file[0]。originalFilename,function(err){if(err){res.status(404)。send('file not upload'));return;}}};},函数(err){res.send('';})};});函数saveFile(file,name,callback){fs.writeFile('./'+name,file,callback);}
    应该是这样的吗?完全正确。模块说明不要使用此模块。
    router.post('/upload',function(req,res){var form=new multiparty.form();form.parse(req,function(err,fields,files){async.each(files,function(file,callback){saveFile(file[0],file[0])。原始文件名,函数(err{if(err){res status(404)。发送('File not uploaded');return;}}};},function(err){res.send('');});function saveFile(File,name,callback){fs.writeFile('./'+name,File,callback);}
    应该是这样的?
    var express=require('express');var router=express.router();var multiparty=require('multiparty'));var fs=require('fs');var async=require(“async”);
    您需要自己构建中间件,但多方是非常简单的。