javascript 无法使用FormData为axios设置内容类型标头

owfi6suc  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(123)

在此示例中(客户端):

axios({
    url: "/public-resolutions/decision-files/",
    method: "post",
    processData: false,
    data: formData,
    headers: {
        "Content-Type": "multipart/form-data; charset=UTF-8",
    },
});

当I console.logconfig在axios请求拦截器内部时(例如:axios.interceptors.request.use(function (config)....),* 我看不到Content-Type头 *。但是如果我用空对象替换data,如下所示:

axios({
    url: "/public-resolutions/decision-files/",
    method: "post",
    processData: false,
    data: {}, // ---> change this
    headers: {
        "Content-Type": "multipart/form-data; charset=UTF-8",
    },
});

然后设置标头。有人知道这种行为吗?
PS.我之所以考虑设置这个头是因为服务器正在接收latin 1编码的 file name,这在某些情况下会破坏应用程序。所以我想设置UTF-8编码。
axios版本:0.27.2
这是表单数据:

const formData = new FormData();
formData.append("excel", excel);
for (let i = 0; i < pdfs.length; i++) {
 formData.append("pdfs", pdfs[i]);
}
8zzbczxx

8zzbczxx1#

看起来您的FormData不正确。您应为FormData指定唯一的名称,或者可以将数组传递给FormData(如果需要)。
所以,不要使用以下代码:

const formData = new FormData();
formData.append("excel", excel);
for (let i = 0; i < pdfs.length; i++) {
 formData.append("pdfs", pdfs[i]);
}

请尝试以下代码:

const formData = new FormData();
formData.append("excel", excel);
formData.append("pdfs", pdfs);

或者如果你想用不同的名字发送每个pdfs。你也可以这样做。

相关问题