Azure Blob Storage SDK v12能否本地创建Blob引用并单次上传带元数据的文件?
Azure Blob Storage SDK v12 上传带元数据文件的实现
1. 支持单次请求上传带元数据的文件
完全可以通过单次请求完成文件内容与元数据的上传,核心是利用BlobUploadOptions类传递元数据,示例代码如下:
using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models; using System.Collections.Generic; var connectionString = "your-storage-connection-string"; var containerName = "target-container"; var blobName = "uploaded-file-name"; var localFilePath = "path/to/local/file"; // 初始化客户端 var blobServiceClient = new BlobServiceClient(connectionString); var containerClient = blobServiceClient.GetBlobContainerClient(containerName); var blobClient = containerClient.GetBlobClient(blobName); // 定义元数据字典 var metadata = new Dictionary<string, string> { { "DocumentType", "Invoice" }, { "UploadedBy", "JohnDoe" } }; // 构造上传选项并设置元数据 var uploadOptions = new BlobUploadOptions { Metadata = metadata }; // 单次请求完成文件+元数据上传 await blobClient.UploadAsync(localFilePath, uploadOptions);
2. 先创建Blob引用并添加元数据,再一次性上传
SDK v12中可以通过BlobClient对象预先管理元数据,再在上传时一并提交,替代v11中CloudBlockBlob.Metadata.Add的用法:
// 初始化BlobClient(即本地Blob引用) var blobClient = containerClient.GetBlobClient(blobName); // 直接向BlobClient的Metadata集合添加元数据 blobClient.Metadata.Add("ProjectId", "PROJ-123"); blobClient.Metadata.Add("ExpiryDate", "2024-12-31"); // 上传时传入包含已设置元数据的选项 var uploadOptions = new BlobUploadOptions { Metadata = blobClient.Metadata }; await blobClient.UploadAsync(localFilePath, uploadOptions);
说明
- 上述两种方式均为单次HTTP请求完成上传(当文件大小未超过单个Blob的最大上传限制时,默认采用单次上传模式),元数据会作为请求头的一部分发送至Azure存储服务。
- 若需处理大文件分片上传,同样可以在
ParallelTransferOptions之外,通过BlobUploadOptions.Metadata传递元数据,最终合并分片时元数据会被应用到Blob上。
内容的提问来源于stack exchange,提问作者tlt
相关产品推荐
相关产品推荐

