Binary 使用fetch上载二进制文件
我正在尝试将文件上载到Zendesk,以下是API:Binary 使用fetch上载二进制文件,binary,fetch,zendesk-api,Binary,Fetch,Zendesk Api,我正在尝试将文件上载到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 这就是当文
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
这就是当文件是一个文件对象时,我的代码的样子
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
页眉和页脚而损坏
这就是我所尝试的:
设置“内容类型:应用程序/二进制文件”
头,因为这是API所期望的
将文件传递到fetch正文
,而不使用FormData
(按原样)
在将其传递给正文之前,使用FileReader.readAsBinaryString
我的尝试都没有成功-服务器返回错误,我创建文件的唯一方法是使用FormData
并且没有任何内容类型
标题,但我没有找到摆脱WebKitFormBoundary
标题和页脚的方法
例如:
------WebKitFormBoundaryragq26qGRKa2B9Qg
Content-Disposition: form-data; name="file"; filename="README.md"
Content-Type: text/markdown
------WebKitFormBoundaryragq26qGRKa2B9Qg--
以下代码适用于我:
fetch(
"https://{my-domain}.zendesk.com/api/v2/uploads.json?filename=" + file.name,
{
method: "POST",
body: file,
headers: {
"Content-type": file.type
}
}
)
图片上传对你有用吗。对于我来说,响应JSONTANKS上的高度和宽度为空。。我必须使用缓冲库来生成二进制文件。在zendesk服务器上直接上载没有缓冲区的base64字符串受到损坏/损坏