【问题标题】:Is it possible to add a Body and and Files to a single Axios request in JS?是否可以在 JS 中将 Body 和 Files 添加到单个 Axios 请求中?
【发布时间】:2021-03-30 21:18:53
【问题描述】:

所以我可以使用下面的 POST 请求发送文件或正文,但我如何发送两者?

axios.post("http://localhost:3000/upload", formData )

如何向 body:{} 部分添加内容?

服务器响应:

  files: {
        myFile: {
          name: 'close.bmp',
          data: <Buffer 42 4d 98 cb 01 00 00 00 00 00 36 00 00 00 28 00 00 00 c8 00 00 00 c4 00 00 00 01 00 18 00 00 00 00 00 62 cb 01 00 c3 0e 00 00 c3 0e 00 00 00 00 00 00 ... 117606 more bytes>,
          size: 117656,
          encoding: '7bit',
          tempFilePath: '',
          truncated: false,
          mimetype: 'image/bmp',
          md5: '8860ffe0891f5142164ea21b092c3996',
          mv: [Function: mv]
        }
      },
      body: {},
      route: Route {
        path: '/upload',
        stack: [ [Layer] ],
        methods: { post: true }
      },
      [Symbol(kCapture)]: false,
      [Symbol(RequestTimeout)]: undefined
    }

【问题讨论】:

  • 你在后端使用 Node 吗?
  • 抱歉,我使用的是 Node

标签: javascript node.js reactjs post axios


【解决方案1】:

您可以使用express-fileupload 轻松完成此操作。所以安装它并让应用在你的节点服务器中使用它:

import fileUpload from 'express-fileupload';

app.use(fileUpload());

然后在您的前端,创建一个FormData 对象并将文件和任何其他属性附加到它:

const upload = (file, description) => {
    const data = new FormData();
    data.append('file', file);
    data.append('description', description);

    return axios.post('/upload', data);
};

然后在您的路由中,您可以访问files 属性下的文件,以及body 属性下的其他文件:

function upload (req, res) {
    console.log(req.files);
    console.log(req.body.description);
    return res.status(200).end();
}

【讨论】:

  • 谢谢,这正是我所需要的。 data.append('描述', 描述);是我错过的!
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 2018-02-09
  • 2018-09-05
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
相关资源
最近更新 更多