我正在尝试将文件上传到Zendesk,这是API:
curl "https://{subdomain}.zendesk.com/api/v2/uploads.json?
filename=myfile.dat&token={optional_token}" \
-v -u {email_address}:{password} \
-H "Content-Type: application/binary" \
--data-binary @file.dat -X POST
当文件是我从拖放区得到的File object
时,我的代码是这样的:
const formData = new FormData();
formData.append("file", file);
fetch(
"https://{my-domain}.zendesk.com/api/v2/uploads.json?filename=" + file.name,
{
method: "POST",
body: formData
}
)
问题在于最终文件由于WebKitFormBoundary
页眉和页脚而损坏。
这是我尝试过的:
设置"Content-Type: application/binary"
标头,因为这是API的期望。
不带body
(按原样)将文件传递到获取FormData
。
在将FileReader.readAsBinaryString
传递到正文之前使用它。
我的尝试均无济于事-服务器返回错误,我能够创建文件的唯一方法是使用FormData
并且没有任何Content-Type
标头,但是我找不到方法摆脱WebKitFormBoundary
页眉和页脚。
例如:
------WebKitFormBoundaryragq26qGRKa2B9Qg
Content-Disposition: form-data; name="file"; filename="README.md"
Content-Type: text/markdown
------WebKitFormBoundaryragq26qGRKa2B9Qg--
答案 0 :(得分:0)
以下代码对我有用:
fetch(
"https://{my-domain}.zendesk.com/api/v2/uploads.json?filename=" + file.name,
{
method: "POST",
body: file,
headers: {
"Content-type": file.type
}
}
)