如何使用JavaScript为Azure Blob设置元数据?setMetadata不生效如何解决
JavaScript 为Azure Blob设置元数据的正确实现
问题原因
你调用失败是因为API参数不匹配:你参考的是旧版v2 Azure存储库的BlobService.setBlobMetadata接口,目前你使用的是官方推荐的v12版本@azure/storage-blob库,BlockBlobClient实例本身已经绑定了对应的容器和Blob路径,setMetadata方法不需要传入容器、文件参数,仅需传入元数据对象即可。
正确代码示例
const { BlobServiceClient } = require('@azure/storage-blob'); // 用自己的存储账户连接字符串初始化实例 const blobServiceClient = BlobServiceClient.fromConnectionString(process.env.AZURE_STORAGE_CONNECTION_STRING); const containerClient = blobServiceClient.getContainerClient('你的容器名称'); const blockBlobClient = containerClient.getBlockBlobClient('目标Blob的文件名'); const metadata = { name, selection }; // 方式1:上传文件时直接携带元数据,无需额外调用接口 await blockBlobClient.upload(file, file.size, { metadata: metadata }); // 方式2:上传完成后单独更新元数据 // await blockBlobClient.setMetadata(metadata);
注意事项
- 元数据的键名必须符合HTTP标头规范,仅支持字母、数字、短横线,不能包含特殊字符和空格,大小写不敏感
- 如果你在浏览器端调用接口,需要确认使用的SAS令牌拥有对应Blob的写入权限,否则会返回403权限错误
- 调用完成后可以通过
await blockBlobClient.getProperties()返回的metadata字段,验证元数据是否设置成功
内容的提问来源于stack exchange,提问作者hammies
相关产品推荐
相关产品推荐

