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

C#操作Azure Storage:如何向已存在的容器上传文件

向Azure Storage已有容器上传文件(C#)& 容器上限说明

我来帮你解决这两个问题:

一、如何向已存在的容器上传文件

你报错“容器已存在”,大概率是保留了官方示例里的容器创建代码(比如调用了Create()而非CreateIfNotExists())。既然你已经提前在Azure Portal创建了testresult1容器,直接跳过创建步骤,获取容器引用后上传文件即可。

方法1:使用旧版SDK(Microsoft.Azure.Storage.Blob)

如果你还在使用旧的存储SDK,代码示例如下:

using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // 替换为你的存储账户连接字符串
        string connectionString = "YourStorageAccountConnectionString";
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
        
        // 创建Blob客户端
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        
        // 获取已存在的容器引用(关键:不要调用Create()!)
        CloudBlobContainer container = blobClient.GetContainerReference("testresult1");
        
        // 上传单个文件
        string localFile = @"C:\temp\sample.txt";
        string blobName = "uploaded-sample.txt"; // 容器中Blob的名称
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
        await blockBlob.UploadFromFileAsync(localFile);
        
        // 批量上传多个文件
        string[] filesToUpload = { @"C:\temp\file1.jpg", @"C:\temp\file2.pdf" };
        foreach (var filePath in filesToUpload)
        {
            string fileName = Path.GetFileName(filePath);
            CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
            await blob.UploadFromFileAsync(filePath);
        }
    }
}

注意:如果你不确定容器是否存在,可以调用await container.CreateIfNotExistsAsync();,这个方法会在容器不存在时创建,存在时返回false且不会报错。但既然你已经提前创建了,完全可以跳过这一步。

方法2:使用新版SDK(Azure.Storage.Blobs,推荐)

微软现在推荐使用新版的Azure存储SDK(更轻量、性能更好),代码示例:

using Azure.Storage.Blobs;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string connectionString = "YourStorageAccountConnectionString";
        BlobServiceClient serviceClient = new BlobServiceClient(connectionString);
        
        // 获取已存在的容器引用
        BlobContainerClient containerClient = serviceClient.GetBlobContainerClient("testresult1");
        
        // 上传单个文件
        string localFile = @"C:\temp\sample.txt";
        using FileStream stream = File.OpenRead(localFile);
        await containerClient.UploadBlobAsync("uploaded-sample.txt", stream);
        
        // 批量上传
        string[] filesToUpload = { @"C:\temp\file1.jpg", @"C:\temp\file2.pdf" };
        foreach (var filePath in filesToUpload)
        {
            string fileName = Path.GetFileName(filePath);
            using FileStream fileStream = File.OpenRead(filePath);
            await containerClient.UploadBlobAsync(fileName, fileStream);
        }
    }
}

二、Azure Storage容器创建上限说明

每个Azure存储账户最多可以创建500,000个容器,这个上限是针对单个存储账户的,和Azure订阅没有直接关联。不过你的订阅会有存储账户数量的默认上限(每个区域25个,可通过支持工单申请提升),所以间接影响你能创建的总容器数,但单存储账户的容器上限是固定的50万。

内容的提问来源于stack exchange,提问作者Sohel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:28:09