我试图将客户端重构为
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); }
解决方法
提取可以使用一个
second argument,init,它指定请求的高级选项.特别地,您可以指定方法和主体选项:
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.