使用@azure/storage-blob上传文件路径多出容器名层级的异常问题
问题原因分析
1. 核心原因:存储服务端点配置错误
BlobServiceClient 初始化时要求传入的 STORAGE_HOST 是存储账号的根服务端点,标准格式为 https://<存储账号名>.blob.core.windows.net/,不能包含容器名。
如果你的 process.env.STORAGE_HOST 配置时错误带上了容器名后缀,比如写成了 https://xxx.blob.core.windows.net/C1,后续调用 blobSvc.getContainerClient('C1') 时,SDK 会自动在现有端点后拼接 /C1,最终的 blob 实际存储路径就会变成 C1/C1/文件夹路径/文件名,刚好对应你遇到的容器下多了一层同名C1目录的问题。
2. 次要问题:store 函数调用参数顺序传反
你的 store 函数定义的入参顺序是 (本地文件路径: string, 目标存储目录: string),但示例调用里写反了参数顺序:
// 错误写法:第一个参数传了目标目录,第二个传了本地文件路径 store('folder1/folder2/folder3', '/temporary/path/to/the/file.jpg');
这个问题会导致拼接出来的 blob 名称不符合预期,也可能加剧路径异常问题,正确的调用写法应该是:
// 正确写法:第一个参数传本地文件路径,第二个传目标存储目录 store('/temporary/path/to/the/file.jpg', 'folder1/folder2/folder3');
修复方案
- 修正
STORAGE_HOST配置,删除端点末尾的容器名后缀,仅保留存储账号根端点 - 调整
store函数的调用参数顺序,和定义保持一致
内容的提问来源于stack exchange,提问作者Bahram
相关产品推荐
相关产品推荐

