Binary 使用fetch上载二进制文件

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 这就是当文

我正在尝试将文件上载到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
这就是当文件是一个
文件对象时,我的代码的样子

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字符串受到损坏/损坏