Azure Storage:如何通过Rest API一次性上传.pdf/.docx文件至文件共享并实现下载
一步上传Azure文件共享的解决方案(附下载方法)
嘿,我懂你分两步上传的麻烦!其实Azure Files的REST API完全支持一次性上传PDF、DOCX这类文档,不用先创建空文件再追加内容。下面给你详细说怎么操作,还有对应的下载方法:
一、一次性上传文件(PDF/DOCX)
你可以直接使用Put File API,把文件内容直接放到请求体里,一步完成文件创建和内容写入。这里给你具体的请求参数和示例:
核心请求参数
- 请求方法:
PUT - 请求URL:
https://<你的存储账户名>.file.core.windows.net/<文件共享名>/<目标文件路径>(比如https://mystorage.file.core.windows.net/docs/report.pdf) - 必填请求头:
Authorization: 可以用SAS令牌或者基于账户密钥生成的授权字符串(建议用SAS更安全)x-ms-version: 指定API版本,比如2023-11-03(选最新稳定版就行)x-ms-content-length: 要上传文件的字节大小(必须和实际内容一致)x-ms-type: 固定值fileContent-Type: 对应文件的MIME类型,比如:- PDF:
application/pdf - DOCX:
application/vnd.openxmlformats-officedocument.wordprocessingml.document
- PDF:
- 请求体: 直接填入文件的二进制内容
示例curl命令
curl -X PUT "https://mystorage.file.core.windows.net/docs/report.pdf" \ -H "Authorization: SharedAccessSignature sr=https%3A%2F%2Fmystorage.file.core.windows.net%2Fdocs&sig=xxx&se=2024-12-31T23%3A59%3A59Z&sp=rw" \ -H "x-ms-version: 2023-11-03" \ -H "x-ms-type: file" \ -H "x-ms-content-length: 12345" \ -H "Content-Type: application/pdf" \ --data-binary "@./local-report.pdf"
注意事项
- 如果文件大小超过4MB,Azure会要求你用分块上传(
Put Range),但你可以把分块逻辑封装成一个方法,对外还是“一次性”调用的体验 - 确保
x-ms-content-length和实际文件大小完全匹配,否则会报错
二、文档下载方法
下载就更简单了,用Get File API直接获取文件内容:
核心请求参数
- 请求方法:
GET - 请求URL: 和上传的URL一样,指向目标文件
- 必填请求头:
Authorization: 同样用SAS令牌或授权字符串x-ms-version: 和上传时用的API版本一致
示例curl命令
curl -X GET "https://mystorage.file.core.windows.net/docs/report.pdf" \ -H "Authorization: SharedAccessSignature sr=https%3A%2F%2Fmystorage.file.core.windows.net%2Fdocs&sig=xxx&se=2024-12-31T23%3A59%3A59Z&sp=r" \ -H "x-ms-version: 2023-11-03" \ --output "./downloaded-report.pdf"
这样就能直接把文件保存到本地啦。如果是在代码里实现,只需要发送GET请求,然后把响应体写入本地文件即可。
内容的提问来源于stack exchange,提问作者2437850
相关产品推荐
相关产品推荐

