我正在开发一个restful api,它将读取excel表并以json格式返回表格中的数据。但是当从邮递员上传文件(.xls)并将请求发送到api时。 api崩溃了。
以下是我的代码:
来自app.js
var app= express();
var upload = multer({
fileFilter : function(req, file, callback) {
if (['xls', 'xlsx'].indexOf(file.originalname.split('.')[file.originalname.split('.').length-1]) === -1) {
return callback(new Error('Wrong extension type'));
}
callback(null, true);
}
}).single('file');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var routes = require("./routes/routes.js")(app,upload);
var server = app.listen(3000, function () {
console.log("Listening on port %s...", server.address().port);
});
routes.js:
app.post('/uploadxl', function(req, res) {
console.log("upload file");
var exceltojson = require("xls-to-json-lc");
upload(req,res,function(err){
console.log("e");
if(err){
res.json({error_code:1,err_desc:err});
return;
}
/** Multer gives us file info in req.file object */
if(!req.file){
res.json({error_code:1,err_desc:"No file passed"});
return;
}
//start convert process
/** Check the extension of the incoming file and
* use the appropriate module
*/
if(req.file.originalname.split('.')[req.file.originalname.split('.').length-1] === 'xlsx'){
exceltojson = xlsxtojson;
} else {
exceltojson = xlstojson;
}
var node_xj = require("xls-to-json");
node_xj({
input: req.file.path, // input xls
output: "output.json", // output json
sheet: "a" // specific sheetname
}, function(err, result) {
if(err) {
console.log("error");
console.error(err);
} else {
console.log("--------result----");
res.json(result);
}
});
});
});
}
我在Windows命令提示符下出现此错误:
上传文件e您错过了输入文件
这显然意味着它正在进入multer的错误功能。