Skip to content

如何使用 TypeScript 在 Azure Blob Storage 中管理文件

本文介绍如何通过 Azure 官方 TypeScript/JavaScript SDK 快速构建对象存储功能,涵盖从身份认证到块状存储(Block Blob)及追加存储(Append Blob)的完整操作流程。

为什么需要这个技能

在构建现代云应用时,存储非结构化数据(如图片、日志、备份文件、VHD 磁盘镜像)是核心需求。Azure Blob Storage 提供了极高的扩展性,但其 SDK 的客户端层级结构(Service -> Container -> Blob)对于初学者来说有一定的学习成本。

掌握该技能可以让你在 TS 项目中高效地处理海量文件,并根据不同场景(如实时日志追加或大文件流式传输)选择最合适的 Blob 类型,同时确保在生产环境中通过 SAS 令牌或 AAD 身份验证实现安全访问。

适用场景

  • 静态资源管理:上传用户头像、文档附件到云端。
  • 日志收集系统:利用 Append Blob 实时追加应用程序运行日志。
  • 大数据导出/导入:通过流式传输(Stream)处理 GB 级的大文件,避免内存溢出。
  • 临时授权分享:为前端用户生成一个限时可用的 SAS 下载链接。

核心工作流

1. 环境准备与认证

首先安装必要的依赖:

bash
npm install @azure/storage-blob @azure/identity

推荐使用 DefaultAzureCredential 实现无密码认证,或通过连接字符串快速启动:

typescript
import { BlobServiceClient } from "@azure/storage-blob";
const client = BlobServiceClient.fromConnectionString(process.env.AZURE_STORAGE_CONNECTION_STRING!);

2. 客户端层级操作

操作遵循 BlobServiceClient(账户级) ContainerClient(容器级) BlobClient(文件级)的路径。

  • 创建容器await containerClient.createIfNotExists();
  • 上传文件:使用 BlockBlobClient 进行常规上传。
  • 下载文件:通过 download() 获取可读流,或在 Node.js 中直接使用 downloadToFile()

3. 针对性存储选择

  • Block Blob:适用于大多数文本和二进制文件。
  • Append Blob:专为日志设计,仅支持在末尾追加数据。
  • Page Blob:适用于随机读写的虚拟硬盘文件(VHD)。

4. 安全访问控制

在浏览器端直接暴露 Key 是极其危险的。正确做法是在后端生成一个具有权限限制(如仅读取)且有过期时间的 SAS Token,将该 URL 传递给前端。

下载和安装

下载 azure-storage-blob-ts 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐