Node.js 通过post请求发送文件

Node.js 通过post请求发送文件,node.js,express,Node.js,Express,我想通过post请求发送文件,但我似乎无法使其正常工作,有人能发现问题吗 提前谢谢 router.post('/:matchId', (req, res) => { zed.makeSpecBatch(req.body).then(matchCmd => { fs.writeFile(`./matches/${req.params.matchId}.bat`, matchCmd, err => { if (err) console

我想通过post请求发送文件,但我似乎无法使其正常工作,有人能发现问题吗

提前谢谢

router.post('/:matchId', (req, res) => {
    zed.makeSpecBatch(req.body).then(matchCmd => {
        fs.writeFile(`./matches/${req.params.matchId}.bat`, matchCmd, err => {
            if (err) console.log(err);
            res.sendFile(`${req.params.matchId}.bat`, {root: __dirname+'/../matches'})
        });
    });
});

您正在写入
/matches/${req.params.matchId}.bat
文件,但发送的
\uu dirname+'/../matches'
目录不正确。我认为你需要使用正确的路径

 __dirname+'/matches'

  • 如果您发送的是像(图像、音频和视频、pdf等)这样的文件,则必须通过req.files获取
  • 在req.body中,您只获得文本和JSON数据
  • 在req.files中,您可以获得文件的完整对象

    router.post('/:matchId', (req, res) => {
     // check here
    var files = req.files;
    console.log(files);
     zed.makeSpecBatch(req.files.file.path).then(matchCmd => {
        fs.writeFile(`./matches/${req.params.matchId}.bat`, matchCmd, err => {
         if (err) console.log(err);
          res.sendFile(`${req.params.matchId}.bat`, {root: __dirname+'/../matches'})
        });
      });
    });
    
    如果我不正确,请回答正确的答案


  • 我可以确认原始帖子中的路径是curreti。我正在基于来自body
    fs.writeFile(
    /matches/${req.params.matchId}.bat
    ,matchCmd,err=>
    的matchId创建文件。此函数创建要下载的文件
    router.post('/:matchId', (req, res) => {
     // check here
    var files = req.files;
    console.log(files);
     zed.makeSpecBatch(req.files.file.path).then(matchCmd => {
        fs.writeFile(`./matches/${req.params.matchId}.bat`, matchCmd, err => {
         if (err) console.log(err);
          res.sendFile(`${req.params.matchId}.bat`, {root: __dirname+'/../matches'})
        });
      });
    });