Javascript 如何通过Axios上传与FormData一起发送的文件?(TypeError:file.mv不是函数)

Javascript 如何通过Axios上传与FormData一起发送的文件?(TypeError:file.mv不是函数),javascript,node.js,express,axios,form-data,Javascript,Node.js,Express,Axios,Form Data,因此,我使用Axios从一台服务器向另一台服务器发送文件,一台是应用程序后端,另一台是区块链服务器 我将文件发送到的位置: router.post("/acme/:id", auth, async (req, res) => { var formData = new FormData(); console.log(req.files.file) formData.append("image", req.files.file.data); var Respo

因此,我使用Axios从一台服务器向另一台服务器发送文件,一台是应用程序后端,另一台是区块链服务器

我将文件发送到的位置:

router.post("/acme/:id", auth, async (req, res) => {

    var formData = new FormData();
    console.log(req.files.file)
    formData.append("image", req.files.file.data);
    var Response;

    try {
      Response = await axios.post(BC_SERVER + "acmeDataFileUpload", {
        id: req.params.id,
        data: formData,
        headers: {
            'Content-Type': 'multipart/form-data'
          }
      });

    } catch (error) {
      console.log("Error BlockChain");
    }

    try {
      res.status(201).send("ok");
    } catch (e) {
      res.status(500).send(e);
    }
  });
Axios将其发送到的位置:

app.post('/acmeDataFileUpload', async (req, res) => {        
    const id_owner = req.body.id;
    console.log(req.body)
    const file = req.body.data;
    const fileName = id_owner;  
    const filePath = 'files/' + fileName;
    console.log(fileName);

    file.mv(filePath, async (err) => {
        try {
            const fileHash = await addFile(fileName, filePath);
            fs.unlink(filePath, (err) => {
                if (err) console.log(err);
            });
            const json = '{"dataType": "Object" , "local": "'+localServer+fileHash+'",' +'"ipfsServer": "'+ipfsServer+fileHash+'"}';
            console.log(json);
            const obj = JSON.parse(json);
            res.status(201).send(obj);
        } catch (err) {
            console.log('Error : failed to download file');
            console.log(err);
            return res.status(500).send(err);
        }
    });


});
这就是
req.body
的日志:

{
  id: '5ec2b7d47ae93a49ecb773f6',
  data: {
    _overheadLength: 144,
    _valueLength: 579564,
    _valuesToMeasure: [],
    writable: false,
    readable: true,
    dataSize: 0,
    maxDataSize: 2097152,
    pauseStreams: true,
    _released: false,
    _streams: [
      '----------------------------383350625990492694059785\r\n' +
        'Content-Disposition: form-data; name="image"\r\n' +
        'Content-Type: application/octet-stream\r\n' +
        '\r\n',
      [Object],
      null
    ],
    _currentStream: null,
    _insideLoop: false,
    _pendingNext: false,
    _boundary: '--------------------------383350625990492694059785'
  },
  headers: { 'Content-Type': 'multipart/form-data' }
}
基本上我是在这里发送缓冲区,因为FormData不接受文件并告诉我source.on不是一个函数我宁愿我的图像被发送到
req.files
而不是
req.body
,Axios真的让我困惑。

headers:FormData.getHeaders()

如您所见,“文件”对象没有“移动”方法。我认为可以使用NodeJs file对象移动文件。请参阅删除
'Content-Type':'multipart/form data'
标题。
FormData
请求主体将为您正确设置此选项,包括mime边界。如果您考虑使用类似的中间件,尽管此代码可能会解决OP的问题,但最好包含关于代码如何解决OP问题的解释。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或使用源文档补充说明。