Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与XMLHttpRequest.send(文件)等价的获取API是什么?_Javascript_Ajax_Html_Dom_Fetch Api - Fatal编程技术网

Javascript 与XMLHttpRequest.send(文件)等价的获取API是什么?

Javascript 与XMLHttpRequest.send(文件)等价的获取API是什么?,javascript,ajax,html,dom,fetch-api,Javascript,Ajax,Html,Dom,Fetch Api,我正在尝试将一个客户端从XMLHttpRequest重构到一个旧的后端,以使用FetchAPI,但我很难弄清楚下面的代码中与xhr.send(文件)等价的FetchAPI是什么 input.addEventListener('change', function(event) { var file = event.target.files[0]; var url = 'https://somedomain.com/someendpoint'; var xhr = new XMLHttp

我正在尝试将一个客户端从XMLHttpRequest重构到一个旧的后端,以使用FetchAPI,但我很难弄清楚下面的代码中与xhr.send(文件)等价的FetchAPI是什么

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);
}

可以这样做:

var input = document.querySelector('input[type="file"]')

var data = new FormData()
data.append('file', input.files[0])

fetch('/avatars', {
  method: 'POST',
  body: data
})


fetch
可以采用,
init
,它指定请求的高级选项。特别是,您可以指定
方法
正文
选项:

fetch(url, {
  method: 'POST',
  headers: new Headers({
    "Content-Type": "image/jpeg",
  }),
  body: file,
})
您还可以将相同的选项传递给
请求


body
必须是Blob、BufferSource、FormData、URLSearchParams或USVString对象。幸运的是,文件对象只是一种特殊的blob,可以使用。

这是我在许多internet站点上找到的方法,但它不是等效的。我试过这个,但它不起作用。然而,Stas Malolepszy的解决方案确实如此。你赢了!非常感谢你。