1

当我尝试使用 Postman 将文件上传到Backblaze B2(存储提供程序)时,页眉和页脚被添加到所有文件中,并且似乎已损坏且无法打开

----------------------------114434797603440341474406
Content-Disposition: form-data; name="package.json"; filename="package.json"
Content-Type: application/json

file content

----------------------------114434797603440341474406--

仅当我使用表单数据上传文件时才会发生这种情况,并且当我在 Postman 中使用二进制方法时它工作正常

我的问题是:

  • 该标头是由邮递员还是存储提供商添加的?
  • 上传时我做错了吗?
  • 可以使用FileReader.readAsBinaryString() JS 方法从客户端上传文件作为二进制文件吗

这是我发送的 C-url 请求

curl --location 
--request POST 'https://..........t0045' \
--header 'Authorization: 4_002..........' \
--header 'Content-Type: application/json' \
--header 'X-Bz-File-Name: package.json' \
--header 'X-Bz-Content-Sha1: do_not_verify' \
--form 'package.json=@"/path/to/file/package.json"'
4

1 回答 1

1

依次回答您的问题:

  • Postman 正在添加该页眉(和页脚)。当您告诉 Postman 使用 form-data 时,您是在告诉 Postman 将页眉和页脚添加到数据中。
  • 上传到 Backblaze B2 时必须指定二进制文件(见下文)
  • 是的 - 你应该能够使用FileReader.readAsBinaryString().

b2_upload_file的文档说明您必须在 HTTP 消息正文中提供二进制文件数据:

要上传的文件是消息体,不以任何方式编码。它不是 URL 编码的。它不是 MIME 编码的。

cURL 应如下所示:

curl \
    -H 'Authorization: 4_002..........' \
    -H 'Content-Type: application/json' \
    -H 'X-Bz-File-Name: package.json' \
    -H 'X-Bz-Content-Sha1: do_not_verify' \
    --data-binary @"/path/to/file/package.json" \
    'https://..........t0045'
于 2022-01-11T00:12:22.657 回答