在使用邮递员时,Multer没有填充req.files

问题描述 投票:0回答:1

我正在开发一个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的错误功能。

enter image description here

node.js postman multer
1个回答
1
投票

你的问题似乎与this问题类似。

如果您使用的是邮递员,可以尝试删除标题:“内容类型”:“multipart / form-data”。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.