使用FormData对象上传文件

注意不要手动设置Content-Typemultipart/form-data。参考这里的回答。

正常以multipart/form-data编码方式提交请求体,生成的content-type应该像下面这样的:

1
content-type: multipart/form-data; boundary=----WebKitFormBoundarygf3ApzJj5ahh2G7t

boundary是浏览器自动生成的分割符, 如果手动设置Content-Typeboundary就会被覆盖掉,导致无法提交请求体数据。

示例:

1
2
const formData = new FormData()
formData.append('attachment', file)

Request Payload:

1
------WebKitFormBoundarygf3ApzJj5ahh2G7t
Content-Disposition: form-data; name="attachment"; filename="test.csv"
Content-Type: application/octet-stream


------WebKitFormBoundarygf3ApzJj5ahh2G7t--