Azure Blob Storage与NestJS报错:请求URI不对应服务器资源
解决Azure Blob Storage创建Blob时的URI错误
可能的原因及解决方案
1. 容器名称不符合规则或初始化错误
Azure Blob存储的容器名称必须为小写,仅允许包含字母、数字和短横线(不能以短横线开头/结尾,也不能连续使用短横线)。如果你的容器名称是TestContainer(包含大写字母),这不符合命名规范,会导致服务无法识别该资源。
- 登录Azure Portal检查存储账户下的容器名称,确保与代码中使用的名称完全一致(全部小写)
- 初始化
ContainerClient时,确认容器名称参数正确,示例:// 正确的容器名称应为小写,比如"testcontainer" const containerClient = new ContainerClient(connectionString, "testcontainer");
2. 目标容器不存在
如果代码中指定的容器尚未在Azure存储账户中创建,ContainerClient无法找到对应资源,会抛出该错误。
- 在执行Blob操作前,先检查并创建容器(如果不存在),可修改代码添加容器检查逻辑:
async create(key: string, message: any) { const content = JSON.stringify(message); try { // 先确保容器存在 await this.containerClient.createIfNotExists(); const blobName = key; const appendBlobClient = this.containerClient.getAppendBlobClient(blobName); await appendBlobClient.createIfNotExists(); await appendBlobClient.appendBlock(content, content.length); } catch (error) { // 打印详细错误信息便于排查 console.error("Blob创建失败:", error.message, error.details); throw error; } }
3. Blob名称包含非法字符
Blob名称不能包含\ / : * ? " < > |等特殊字符,且长度不能超过1024字符。检查传入的key参数是否符合命名规则,若有非法字符需先做转义或过滤处理。
4. 连接配置错误
确认连接字符串/URL的正确性:
- 检查连接字符串中的存储账户名称、密钥是否拼写正确
- 如果使用连接URL,格式应为
https://<account-name>.blob.core.windows.net/,确保没有多余路径或拼写错误
内容的提问来源于stack exchange,提问作者Catopus
相关产品推荐
相关产品推荐

