You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Blob Storage REST API问题:Curl+SAS令牌无法下载容器内Blob

Azure Blob Storage:容器SAS令牌无法下载Blob(可正常列出)

问题概述

使用Azure Blob Storage REST API可正常完成连接资源、列出容器、生成容器SAS令牌及列出容器内Blob等操作,但通过curl使用容器SAS令牌下载Blob时,先后返回ResourceNotFound和BlobNotFound错误,尽管已通过list命令确认Blob存在。

初始命令与错误

初始curl命令

curl -X GET "https://dat3473spa01cfeMtest.blob.core.windows.net/90480397-91234697-218-test-dir01/3c6a1ba9-2168-4171-8311-813e3762108b.txt&sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl"

参数说明

  • Blob服务URL:https://dat3473spa01cfeMtest.blob.core.windows.net
  • 容器名称:90480397-91234697-218-test-dir01
  • Blob名称:3c6a1ba9-2168-4171-8311-813e3762108b.txt
  • 容器SAS令牌:?sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl

初始错误信息

<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>ResourceNotFound</Code>
    <Message>The specified resource does not exist.
RequestId:8feff5f9-001e-006d-5b18-260db0000000
Time:2024-10-24T13:28:25.9692381Z</Message>
</Error>

调整后的命令与错误

# 错误添加了&?分隔符
curl -X GET "https://dat3473spa01cfeMtest.blob.core.windows.net/90480397-91234697-218-test-dir01/3c6a1ba9-2168-4171-8311-813e3762108b.txt&?sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl"

# 修正为?开头,但仍报错
curl -X GET "https://dat3473spa01cfeMtest.blob.core.windows.net/90480397-91234697-218-test-dir01/3c6a1ba9-2168-4171-8311-813e3762108b.txt?sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl"

返回错误

<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>BlobNotFound</Code>
    <Message>The specified blob does not exist.
RequestId:4978f267-601e-0043-3419-26bc10000000
Time:2024-10-24T13:32:22.1650304Z</Message>
</Error>

Blob存在验证

列出Blob的命令

curl -X GET "https://dat3473spa01cfeMtest.blob.core.windows.net/90480397-91234697-218-test-dir01?restype=container&comp=list&sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl"

返回结果

90480397-91234697-218-test-dir01/3c6a1ba9-2168-4171-8311-813e3762108b.txt

解决方案

1. 修正URL查询参数分隔符

初始命令中,SAS令牌以&开头,这是错误的。URL查询参数必须以?开头,&仅用于分隔多个参数。这是导致ResourceNotFound错误的直接原因。

2. 匹配Blob的实际名称

从list命令的返回结果可以看出,Blob的完整名称包含容器前缀:90480397-91234697-218-test-dir01/3c6a1ba9-2168-4171-8311-813e3762108b.txt,而非仅文件名。这说明上传时可能误将容器名作为Blob路径的一部分,因此下载URL中的Blob路径需要使用完整名称。

正确的curl命令

curl -X GET "https://dat3473spa01cfeMtest.blob.core.windows.net/90480397-91234697-218-test-dir01/90480397-91234697-218-test-dir01/3c6a1ba9-2168-4171-8311-813e3762108b.txt?sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl"

额外验证方法

若仍有问题,可使用Azure CLI验证Blob是否存在及权限:

az storage blob download --account-name dat3473spa01cfeMtest --container-name 90480397-91234697-218-test-dir01 --name "90480397-91234697-218-test-dir01/3c6a1ba9-2168-4171-8311-813e3762108b.txt" --sas-token "?sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl"

内容的提问来源于stack exchange,提问作者Chazg76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:17:33