首页 > 解决方案 > 如何在javascript中使用axios发送文件和正文?

问题描述

如何通过axios中的post发送文件和json(body)参数我有这个结构但我无法发送,我有以下代码虽然我设法抓取文件,但我无法发送,我也看到了在其他答案中,将我发送的每个参数的附加信息放在正文中,但我需要发送一个数组和整数

            const data = new FormData();
            data.append("imagen", this.file);
            axios.post("https://url/register",
            {
                "typeEvent":[1,2],
                "campus":[1,2],
                "user_id":1,
                "survey_id":1,
                "evn_name":"prueba desde vue",
                "evn_description":"prueba descriocion",
                "evn_miles":300,
                "evn_start_day":"2021-02-05",
                "evn_end_day":"2021-02-05",
                "evn_cost":0,
                "evn_state":1
            },
            data, 
            {
                headers: {
                'Content-Type': 'multipart/form-data'
                }
            }
            ).then((result) => {
                console.log(result);
            }).catch((err) => {
                console.log(err);
            });

标签: javascriptaxios

解决方案


您想要遍历该对象并将每个条目附加到 FormData 对象。

然后就做axios.post(url, data, {head....

const obj = {
  "typeEvent": [1, 2],
  "campus": [1, 2],
  "user_id": 1,
  "survey_id": 1,
   // ....
  "evn_state": 1
}
const data = new FormData();
data.append("imagen", this.file);

Object.entries(obj).forEach(([k, v]) => {
  if (Array.isArray(v)) {
    // used stringify but might also just use join() for comma separated string
    v = JSON.stringify(v);
  }
  data.append(k, v);
});

推荐阅读