Node.js 将带有postman的xls文件上载到使用node/express制作的RESTapi

Node.js 将带有postman的xls文件上载到使用node/express制作的RESTapi,node.js,express,postman,multer,Node.js,Express,Postman,Multer,在节点a中,可以在我的目录中使用和excel文件制作类似的内容 app.post('/api/xlstojson', function(req, res) { var workbook = XLSX.readFile('tc2.xls'); var sheet_name_list = workbook.SheetNames; res.json(XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]

在节点a中,可以在我的目录中使用和excel文件制作类似的内容

  app.post('/api/xlstojson', function(req, res) {   
    var workbook = XLSX.readFile('tc2.xls');
    var sheet_name_list = workbook.SheetNames;
    res.json(XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]));
});
我想和邮递员一起测试文件上传。在那里我选择POST,form data,在键中我选择file而不是text,然后在value中我上传tc2.xls文件

在我的代码中,我有这样的代码

app.post('/api/xlstojson', function(req, res) { 
    var workbook = XLSX.readFile(req.body.file);
    var sheet_name_list = workbook.SheetNames;
    res.json(XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]));
});
但我得到TypeError:路径必须是字符串或缓冲区。我应该如何修改我的代码以使其工作

更新:

我一直在尝试使用multer,但该文件未显示在文件夹中

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) {
        cb(null, './public/uploads/')
    },
    filename: function (req, file, cb) {
        var datetimestamp = Date.now();
        cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1])
    }
});
var upload = multer({ //multer settings
                storage: storage
            }).single('file');
app.post('/upload', function(req, res) {
    upload(req,res,function(err){
        if(err){
             res.json({error_code:1,err_desc:err});
             return;
        }
         res.json({error_code:0,err_desc:null});
    });
});
TypeError:路径必须是字符串或缓冲区

出现此错误是因为未传递文件位置。要使其工作,您需要在上载/文件夹中传递文件的位置

你需要从邮递员那里上传xls文件

'use strict';

const XLSX = require('xlsx');

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './uploads');
  },
  filename: function (req, file, cb) {
    var datetimestamp = Date.now();
    cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length - 1]);
  }
});
var upload = multer({ //multer settings
  storage: storage
});

function validate(req, res, next) {
  if (!req.file) {
    return res.send({
      errors: {
        message: 'file cant be empty'
      }
    });
  }
  next();
}

app.post('/api/xlstojson', upload.single('file'), validate, function (req, res) {
  const fileLocation = req.file.path;
  console.log(fileLocation); // logs uploads/file-1541675389394.xls
  var workbook = XLSX.readFile(fileLocation);
  var sheet_name_list = workbook.SheetNames;
  return res.json({
    json: XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]])
  });
});