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

Python上传文件至Azure Storage后如何下载?遇主机解析失败问题

解决Azure Blob存储的两个问题:主机解析失败与文件下载

一、curl提示"Could not resolve host"的解决步骤

  • 核对存储账户名:URL中的projectName是你的Azure存储账户名称,必须和实际创建的账户名完全一致(存储账户名仅支持小写字母和数字,长度3-24位,若包含大写或特殊字符必然出错)。
  • 确认存储账户状态:登录Azure门户,检查该存储账户是否已成功创建且状态正常(无禁用或未完成部署情况)。
  • 验证网络连通性:尝试访问已知可用的Azure Blob域名(如https://demo.blob.core.windows.net),排查是否是本地网络无法访问Azure服务的问题。
  • 检查URL格式正确性:正确Blob URL结构为https://<存储账户名>.blob.core.windows.net/<容器名>/<Blob完整路径>,你的URL中attachments是容器名,16/document1.pdf是Blob路径,需确保各部分无拼写错误。

二、Python下载Blob文件的实现代码

基于你已有的blob_service_client实例,提供两种常用下载方式:

1. 下载到本地文件

# 初始化Blob客户端,替换为你的容器名和Blob路径
blob_client = blob_service_client.get_blob_client(container_name="attachments", blob_name="16/document1.pdf")

# 将Blob内容写入本地文件
with open("本地保存的文件名.pdf", "wb") as local_file:
    local_file.write(blob_client.download_blob().readall())

2. 读取Blob内容到内存(不保存到本地)

blob_client = blob_service_client.get_blob_client(container_name="attachments", blob_name="16/document1.pdf")
file_content = blob_client.download_blob().readall()
# 可直接对file_content进行后续处理(如解析PDF、转存数据库等)

三、补充:通过curl直接下载Blob的前提

默认Azure Blob是私有访问权限,即使主机解析正常,直接用原URL访问会返回403错误。若需用curl下载,可通过以下两种方式:

  • 临时设置容器/Blob为匿名公共读取权限(不推荐生产环境使用)。
  • 生成SAS(共享访问签名)令牌,拼接成有权限的URL:
from azure.storage.blob import generate_blob_sas, BlobSasPermissions
from datetime import datetime, timedelta

# 生成有效期1小时的只读SAS令牌
sas_token = generate_blob_sas(
    account_name="projectName",  # 替换为你的存储账户名
    container_name="attachments",
    blob_name="16/document1.pdf",
    account_key="<你的存储账户密钥>",  # 从Azure门户获取
    permission=BlobSasPermissions(read=True),
    expiry=datetime.utcnow() + timedelta(hours=1)
)

# 带SAS令牌的可访问URL
sas_url = f"https://projectName.blob.core.windows.net/attachments/16/document1.pdf?{sas_token}"

使用curl下载:

curl -O "{sas_url}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:42:41