是否可以使用fetch
上传文件?我不是在谈论FormData
,但我想成为HTTP
PUT
的实际主体,而Content-Type
正确的ContentType?
如果fetch
无法使用,可以不使用XMLHttpRequest
吗?此代码对我不起作用(事件是drop
事件):
fetch('/foo', {
method: 'PUT',
body: event.dataTransfer.files[0],
});
编辑:
我专门谈论的是文件上传。如果body
是文本,则此可以工作,但如果其FILE
/BLOB
!
您可以创建表单数据,例如:
const body = new FormData();
const file = event.dataTransfer.files[0];
body.append('files', file , file.name);
fetch('/foo', {
method: 'PUT',
body
});
但是,如果您只想直接发送数据,则必须更改标头并使用Blob
:
const body = new Blob(event.dataTransfer.files, { type: 'application/octet-stream' });
fetch('/foo', {
method: 'PUT',
headers: new Headers({ 'Content-Type': 'application/octet-stream' }),
body
});