什么是XMLHttpRequest.send(文件)的Fetch API等价物?

Mat*_*son 9 javascript ajax html5 dom fetch-api

我正在尝试将客户端重构为XMLHttpRequest的旧后端,而不是使用Fetch API,我很难弄清楚下面代码中xhr.send(文件)的Fetch API等价物.

input.addEventListener('change', function(event) {
  var file = event.target.files[0];
  var url = 'https://somedomain.com/someendpoint';
  var xhr = new XMLHttpRequest();
  xhr.open('POST', url, true);
  xhr.setRequestHeader('Content-Type', 'image/jpeg');
  xhr.send(file);
}
Run Code Online (Sandbox Code Playgroud)

Sta*_*szy 12

fetch可以使用第二个参数,init它指定请求的高级选项.特别是,您可以指定methodbody选项:

fetch(url, {
  method: 'POST',
  headers: new Headers({
    "Content-Type": "image/jpeg",
  }),
  body: file,
})
Run Code Online (Sandbox Code Playgroud)

您还可以将相同的选项传递给Request 构造函数.

body必须是Blob,BufferSource,FormData,URLSearchParams或USVString对象.幸运的是,File对象只是一种特殊的Blob,可以在任何接受Blob的地方使用.