上传文件,axios 有效,但 fetch API 无效,我做错了什么?
Uploading file, axios works but fetch API doesn't, what did I do wrong?
我正在使用 fetch API 与服务器通信,然后我意识到当我使用 fetch API 上传文件时,post 请求看起来很奇怪而且我的 PHP 服务器无法通过 $_FILES
正确获取文件。
这是我的基本设置,file
和 fileName
是预先填充的。
const api = 'xxxx/api/file';
const body = new FormData();
body.append('files[]', file, fileName);
body.append('bid', 529);
const headers = {
'Content-Type': 'multipart/form-data',
'Authorization': 'Token xxxxxx'
};
当我使用 fetch API 时,post 请求看起来像这样,我的任何 PHP 服务器都无法获取 post 数据。
fetch(api, { method: 'POST', body, headers, mode: 'cors' });
但是当我使用 axios 时,请求是这样的,我的 PHP 服务器可以正确获取文件:
axios.post(api, body, { headers });
所以这是怎么回事? axios 做了一些不同的事情吗?
有没有不使用 axios 就可以实现的方法?
尝试在不使用 content-Type
键的情况下获取 API:
const api = 'xxxx/api/file';
const body = new FormData();
body.append('files[]', file, fileName);
body.append('bid', 529);
const headers = {
'Authorization': 'Token xxxxxx'
};
delete headers.headers['Content-Type'];
fetch(api, { method: 'POST', body, headers, mode: 'cors' });
来源:https://muffinman.io/blog/uploading-files-using-fetch-multipart-form-data/
我正在使用 fetch API 与服务器通信,然后我意识到当我使用 fetch API 上传文件时,post 请求看起来很奇怪而且我的 PHP 服务器无法通过 $_FILES
正确获取文件。
这是我的基本设置,file
和 fileName
是预先填充的。
const api = 'xxxx/api/file';
const body = new FormData();
body.append('files[]', file, fileName);
body.append('bid', 529);
const headers = {
'Content-Type': 'multipart/form-data',
'Authorization': 'Token xxxxxx'
};
当我使用 fetch API 时,post 请求看起来像这样,我的任何 PHP 服务器都无法获取 post 数据。
fetch(api, { method: 'POST', body, headers, mode: 'cors' });
但是当我使用 axios 时,请求是这样的,我的 PHP 服务器可以正确获取文件:
axios.post(api, body, { headers });
所以这是怎么回事? axios 做了一些不同的事情吗?
有没有不使用 axios 就可以实现的方法?
尝试在不使用 content-Type
键的情况下获取 API:
const api = 'xxxx/api/file';
const body = new FormData();
body.append('files[]', file, fileName);
body.append('bid', 529);
const headers = {
'Authorization': 'Token xxxxxx'
};
delete headers.headers['Content-Type'];
fetch(api, { method: 'POST', body, headers, mode: 'cors' });
来源:https://muffinman.io/blog/uploading-files-using-fetch-multipart-form-data/