上传文件,axios 有效,但 fetch API 无效,我做错了什么?

Uploading file, axios works but fetch API doesn't, what did I do wrong?

我正在使用 fetch API 与服务器通信,然后我意识到当我使用 fetch API 上传文件时,post 请求看起来很奇怪而且我的 PHP 服务器无法通过 $_FILES 正确获取文件。

这是我的基本设置,filefileName 是预先填充的。

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/