如何将Azure Blob文件上传至存储账户容器的嵌套文件夹?
解决Azure Blob上传至嵌套目录的问题
你的核心问题是误解了Azure Blob存储的容器与路径关系:容器名不能包含/分隔符,嵌套目录结构是通过Blob的名称(即文件路径)来实现的,而非修改容器名。
解决方案步骤:
- 保持容器名正确为
testblobupload,不要在容器名里添加TransactionalData/BACKTRACK这类路径 - 在创建
BlobClient时,把完整的嵌套路径拼接进Blob名称中
修改后的关键代码:
// 保持容器名不变,仍为testblobupload var containerNameToUploadTheFile = applyConfirmPriceConfig.AzureBlobStorageContainerNameConfig; // ... 其他代码不变 ... fileName = $"{DateTime.UtcNow:yyyyMMddHHMM}_{sbmessage.Subject}_{sbmessage.MessageId}"; var memorystream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(eventObject))); // 拼接完整的嵌套路径到Blob名称中 BlobClient blobClient = containerClient.GetBlobClient($"TransactionalData/BACKTRACK/{DateTime.UtcNow:yyyyMMdd}/{fileName}"); await blobClient.UploadAsync(memorystream, options);
原理说明:
Azure Blob存储没有真实的文件夹结构,所谓的"嵌套目录"只是通过Blob名称中的/字符来模拟的。当你上传Blob时,只要名称包含/,Azure存储就会自动显示为目录结构,无需提前创建这些"目录"——上传Blob时会自动生成对应的层级结构。
内容的提问来源于stack exchange,提问作者Abhishek_Singh_Rana
相关产品推荐
相关产品推荐

