讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 Python 中从 Azure Blob Storage 下载文件

冬宇大大_7243

冬宇大大_7243

发布时间:2025-12-27 14:53:02

|

326人浏览过

|

来源于php中文网

原创

如何在 Python 中从 Azure Blob Storage 下载文件

本文详细介绍如何使用 azure sdk for python 安全、高效地下载已上传至 blob storage 的文件,避免直接依赖公共 url(易因权限或 dns 问题失败),推荐使用 `blobserviceclient` 的原生下载方法。

在 Azure Blob Storage 中,虽然上传后的文件可通过 HTTPS 公共 URL(如 https://projectName.blob.core.windows.net/attachments/16/document1.pdf)访问,但直接使用 curl 或浏览器下载往往失败——常见原因包括:

  • Blob 容器设为私有(默认行为),未启用公共读取权限;
  • DNS 解析失败(如 Could not resolve host),通常因网络策略、防火墙或拼写错误(如误用 projectName 而非实际存储账户名)导致;
  • 缺少 SAS token 或授权头,导致 403 Forbidden。

✅ 正确做法是复用 BlobServiceClient 实例,通过 SDK 原生方法下载,它自动处理身份验证(基于连接字符串、AAD 或 SAS)、重试逻辑与流式传输,更安全可靠。

Test Curl 2
Test Curl 2

父母的功课——育儿心理学对话支持技能(心虫增强版)。提供结构化对话、情绪识别、场景匹配与安全检测;可选Python脚本(scripts/)在SKILL_DIR/data/本地存储评估历史、洞察与会话状态,不对外传输。核心路径:觉察(看见防御)→接纳(慈悲是……

下载

下载代码示例(推荐方式)

from azure.storage.blob import BlobServiceClient

# 假设你已有已初始化的 blob_service_client(同上传时一致)
# connection_string = "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net"
# blob_service_client = BlobServiceClient.from_connection_string(connection_string)

container_name = "attachments"  # 注意:此处为容器名,非存储账户名
blob_name = "16/document1.pdf"   # 路径需与上传时完全一致(含子目录)

blob_client = blob_service_client.get_blob_client(
    container=container_name,
    blob=blob_name
)

# 指定本地保存路径(支持相对/绝对路径)
local_file_path = "./downloads/document1.pdf"

# 创建目录(若不存在)
import os
os.makedirs(os.path.dirname(local_file_path), exist_ok=True)

# 执行下载
with open(file=local_file_path, mode="wb") as download_file:
    download_stream = blob_client.download_blob()
    download_file.write(download_stream.readall())

print(f"✅ 文件已成功下载至: {local_file_path}")

关键注意事项

  • ? 权限前提:确保 blob_service_client 使用的凭据(连接字符串 / AAD 凭据 / SAS token)具备该容器下 read 权限;
  • ? 路径一致性:blob_name 必须与上传时完全相同(例如上传时用了 "16/document1.pdf",下载时不可省略 "16/");
  • ⚡ 大文件优化:对超大文件(>100MB),建议使用 download_blob().chunks() 分块读取,避免内存溢出;
  • ? 不推荐公开 URL 下载:除非明确启用容器公共访问(public_access='blob')并验证 DNS 可达性,否则应避免依赖裸 URL —— 它绕过 SDK 的认证与容错机制,稳定性差。

总结

Azure Blob Storage 的下载不应依赖外部 HTTP 工具或裸 URL,而应统一使用 BlobServiceClient 提供的 download_blob() 方法。它既保障了安全性(自动携带认证信息),又提升了健壮性(内置重试、断点续传支持、流式处理)。将上传与下载逻辑统一在 SDK 层,是构建可维护、可审计云存储应用的最佳实践。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

3363

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

715

2023.10.30

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

12026

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

1465

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

3217

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

5361

2024.03.01

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1558

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2244

2023.09.04

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

60

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn