You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向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");
}

现有代码执行结果

现有代码执行结果

问题分析

  1. 现有代码将文件内容直接上传到文件夹路径对应的Blob中,导致Blob名称为Project01\Photos\Main,而非预期的Project01\Photos\Main\can_be_deleted.txt。
  2. 依赖本地文件创建和删除操作,不符合“无需本地保存文件”的要求。

解决方案代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:15:33