JS:在上传文件时扩展请求正文数据

时间:2018-03-05 21:05:32

标签: javascript

请考虑以下代码段:

fetch(encodeURI(insertObjectUrl), {
    method: 'POST',
    body: input.files[0]
})

以这种方式编写,请求正文包括:

  • 文件内容
  • 文件大小
  • 文件内容类型

但是,我想添加其他信息,例如手动提供contentDisposition值(请参阅Object: insert)。

如何修改上面的代码以扩展请求体?

body: {
    'file': input.files[0];
    'contentDisposition: 'myvalue'
}

1 个答案:

答案 0 :(得分:0)

来自文档https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

fetch(url, {
  method: 'POST', // or 'PUT'
  body: JSON.stringify(data), 
  headers: new Headers({
    'Content-Type': 'application/json'
  })
}).then(res => res.json())

基于此,您只能通过正文传递数据。话虽如此,您可以将contentDisposition(key,value)添加到正文中,如下所示:

jsonData = {
    'file': input.files[0];
    'contentDisposition: 'myvalue'
}

然后在你的请求中:

fetch(encodeURI(insertObjectUrl), {
    method: 'POST',
    body: JSON.stringify(jsonData)
})

在服务器上,您需要转换'字符串化'将JSON数据转换为对象(使用JSON.loads或其他函数)。

希望这有帮助