是否可以使用fetch
上传文件?我不是在谈论FormData
,但我希望将文件作为HTTP
PUT
的实际正文,以及Content-Type
正确的ContentType?
如果fetch
无法使用,XMLHttpRequest
是否可以?此代码对我不起作用(事件是drop
事件):
fetch('/foo', {
method: 'PUT',
body: event.dataTransfer.files[0],
});
修改
我特别谈论FILE上传。如果body
是文字,则此 可以正常工作,但如果是FILE
/ BLOB
,则
答案 0 :(得分:1)
您可以只创建表单数据,例如:
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
});