我正在尝试将客户端从XMLHttpRequest重构到旧的后端,以改用Fetch API,并且我很难确定下面的代码中xhr.send(file)的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);
}

最佳答案

fetch可以采用second argumentinit,它指定请求的高级选项。特别是,您可以指定methodbody选项:

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

您还可以将相同的选项传递给Request constructor
body必须是Blob,BufferSource,FormData,URLSearchParams或USVString对象。幸运的是,File对象只是一种特殊的Blob,可以使用everywhere where Blobs are accepted

09-10 10:32
查看更多