Javascript express.js多文件上传回调
我是node.js和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
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”);
您需要自己构建中间件,但多方是非常简单的。