将文件上传到 MS Azure 存储

问题描述 投票:0回答:1

我需要将 docx 文件上传到 MS Azure Storage,目前我只是使用 Postman 来测试它。我收到响应 201 并看到文件已成功上传,但当我尝试(手动)下载它们时,它们都已损坏。我的请求是否有错误,有人可以检查一下吗?

cURL(替换了一些细节):

curl --location --request PUT 'https://mycompany.blob.core.windows.net/mycontainer/test10.docx?SAS_token' \
--header 'x-ms-date: 2024-04-30T11:17:08.494Z' \
--header 'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document' \
--header 'Content-Length: 17274' \
--header 'x-ms-version: 2020-04-08' \
--header 'x-ms-blob-type: BlockBlob' \
--form '=@"/Users/user/Desktop/folder/test.docx"'

响应没问题,我也看到容器中有一个文件:

enter image description here

但是下载时文件损坏了:

enter image description here

此外,如果我手动上传,它也可以工作。所以,我确信问题出在我正在使用的 PUT 请求中的某处或安全设置中的某处。

谢谢你。

azure
1个回答
0
投票

问题出在您的请求中的以下行:

--form '=@"/Users/user/Desktop/folder/test.docx"'

基本上,您使用

multipart/form-data
发送文件,而 Azure 存储并不真正支持该文件。您需要发送原始数据。

请尝试将

--form
选项替换为
-T
选项并指定文件路径。

您的命令将类似于:

curl --location --request PUT 'https://mycompany.blob.core.windows.net/mycontainer/test10.docx?SAS_token' \
--header 'x-ms-date: 2024-04-30T11:17:08.494Z' \
--header 'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document' \
--header 'Content-Length: 17274' \
--header 'x-ms-version: 2020-04-08' \
--header 'x-ms-blob-type: BlockBlob' \
-T '/Users/user/Desktop/folder/test.docx'
© www.soinside.com 2019 - 2024. All rights reserved.