如何向Azure存储Blob容器添加带空文本文件的临时文件夹
问题:Azure Blob容器中创建指定项目文件夹结构并生成空文件
需要在项目初始化阶段添加包含子文件夹和文件的初始结构,在Blob容器中要呈现如下路径格式:
Project01\Photos\Main\can_be_deleted.txt
其中Main是文件夹,can_be_deleted.txt是其下的文件,需匹配其他软件的上传管理格式。当前代码生成的结果不符合需求,另外要求无需本地保存文件即可添加该txt文件。
现有代码
public static void CreateInitial(string ProjectName) { // Create default BLOB structure for the new project List<string> folderNames = new() { projectName + @"\Photos\Main", projectName + @"\Photos\Other", projectName + @"\SupportingFiles\Main", projectName + @"\ZipFiles" }; BlobServiceClient bSvcCl = GetStorageAccountTest(_StorageConnectionString); BlobContainerClient contCl = bSvcCl.GetBlobContainerClient(_ActiveProjectsContainer); File.Open(@"C:\can_be_deleted.txt", FileMode.Create).Close(); foreach (var folderName in FoldersNames) { BlobClient blobCl = contCl.GetBlobClient(folderName); //blobCl.Upload(BinaryData.FromString("can_be_deleted.txt"), false, default); blobCl.Upload(@"C:\can_be_deleted.txt"); } File.Delete(@"C:\can_be_deleted.txt"); }
现有代码执行结果

问题分析
- 现有代码将文件内容直接上传到文件夹路径对应的Blob中,导致Blob名称为
Project01\Photos\Main,而非预期的Project01\Photos\Main\can_be_deleted.txt。 - 依赖本地文件创建和删除操作,不符合“无需本地保存文件”的要求。
解决方案代码
public static void CreateInitial(string projectName) { // 定义需要创建文件的目标文件夹路径(不含文件名) List<string> folderPaths = new() { $@"{projectName}\Photos\Main", $@"{projectName}\Photos\Other", $@"{projectName}\SupportingFiles\Main", $@"{projectName}\ZipFiles" }; BlobServiceClient blobServiceClient = GetStorageAccountTest(_StorageConnectionString); BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_ActiveProjectsContainer); // 直接生成空文件内容,无需本地文件 BinaryData emptyFileContent = BinaryData.FromString(string.Empty); foreach (var folderPath in folderPaths) { // 拼接完整的Blob路径:文件夹路径 + 目标文件名 string blobFullPath = $@"{folderPath}\can_be_deleted.txt"; BlobClient blobClient = containerClient.GetBlobClient(blobFullPath); // 上传空内容,overwrite参数可根据需求调整是否覆盖已存在的Blob blobClient.Upload(emptyFileContent, overwrite: false); } }
关键修改说明
- 调整路径逻辑:先定义纯文件夹路径,再拼接
\can_be_deleted.txt得到完整的Blob路径,确保结构符合要求。 - 移除本地文件操作:使用
BinaryData.FromString(string.Empty)直接生成空文件内容,上传到Blob容器。 - 修正命名规范:统一变量命名(如原
FoldersNames改为folderPaths),提升代码可读性。
内容的提问来源于stack exchange,提问作者E. A. Bagby
相关产品推荐
相关产品推荐

