如何在 axios 中为 POST - multipart/form-data 设置 MIME 类型?

Posted

技术标签:

【中文标题】如何在 axios 中为 POST - multipart/form-data 设置 MIME 类型?【英文标题】:How to set MIME type for POST - multipart/form-data in axios? 【发布时间】:2019-08-28 06:27:41 【问题描述】:

我需要使用 MIME 发送 POST 请求 - multipart/form-data

这是我对 POST 标头的默认配置: axios.defaults.headers.post['Content-Type'] = 'multipart/form-data';

我希望默认的 Content-Type 应该是 multipart/form-dat,但在 chrome devtools 我看到 Content-Type: application/json

【问题讨论】:

要明确...是 request 标头中的 application/json 而不是 response 个? 是的,在请求标头中 试试这个参考 -> ***.com/questions/41878838/… 有帮助,谢谢! 【参考方案1】:

你可以试试这个:

const data = new FormData();

data.append('action', 'ADD');
data.append('param', 0);
data.append('secondParam', 0);
data.append('file', new Blob(['test payload'],  type: 'text/csv' ));

axios.post('http://httpbin.org/post', data);

此代码使用FormData API

另一种选择是使用form-data 包:

const axios = require('axios');
const FormData = require('form-data');

const form = new FormData();
// Second argument  can take Buffer or Stream (lazily read during the request) too.
// Third argument is filename if you want to simulate a file upload. Otherwise omit.
form.append('field', 'a,b,c', 'blah.csv');
axios.post('http://example.org/endpoint', form, 
  headers: form.getHeaders(),
).then(result => 
  // Handle result…
  console.log(result.data);
);

【讨论】:

以上是关于如何在 axios 中为 POST - multipart/form-data 设置 MIME 类型?的主要内容,如果未能解决你的问题,请参考以下文章

在 VueJS 中为 Get、Post、Patch 配置全局标头的最佳方法

如何在反应中使用axios(post)

如何在反应中使用 axios 发出 POST 请求?

如何在 firebase 函数中使用 Axios 正确发送 Post 请求?

axios发送post请求,如何提交表单数据?

VUE中 axios GET和POST 如何使用