Javascript 与XMLHttpRequest.send(文件)等价的获取API是什么?
我正在尝试将一个客户端从XMLHttpRequest重构到一个旧的后端,以使用FetchAPI,但我很难弄清楚下面的代码中与xhr.send(文件)等价的FetchAPI是什么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
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的解决方案确实如此。你赢了!非常感谢你。