繁体   English   中英

C#Azure存储-如何将文件上传到已经存在的容器

[英]C# Azure Storage - How to Upload a File to an already Existing Container

希望对如何将文件上传到Azure存储中的现有容器有帮助。 我遵循了Azure文档 -但它似乎指向创建一个新容器并在那里上传文件。 如果我已经预先在Azure中创建了一个容器,例如“ testresult1”,然后尝试使用C#代码将文件上传到那里,那么它会抱怨该容器“ testresult1”已经存在。

这是我使用的错误代码:

CloudBlobContainer = cloudBlobClient.GetContainerReference("testresult1");

Microsoft doc中的示例代码可以正常工作,但是它创建了一个新容器“ quickstartblobs”和GUID,然后将文件上传到该容器。 我试图查看是否有一个选项,如果容器已经存在,那么我们如何使用代码将一个或多个文件上传到该容器中,而无需为每个上传的文件创建一个新的容器。

一个相关的问题:在Azure存储中可以创建多少个容器有上限吗? 与Azure订阅有关吗?

谢谢。

您可以使用CreateIfNotExistsAsync方法,该方法将启动一个异步操作,如果该容器尚不存在,则会创建该容器。

使用以下代码获取您现有的容器,然后按照Doc继续上传文件。

cloudBlobContainer = cloudBlobClient.GetContainerReference("testresult1");
await cloudBlobContainer.CreateIfNotExistsAsync();

在Azure存储中可以创建多少个容器有上限吗? 与Azure订阅有关吗?

每个存储帐户的Blob容器 ,Blob,文件共享,表,队列,实体或消息的最大数量 没有限制

单个Blob容器的最大大小为500 TiB。 每个Blob容器的最大存储访问策略数为5。

有关更多详细信息,您可以参考azure订阅服务限制

获取容器的方法。

    public CloudBlobContainer GetCloudBlobContainer(string strBlobContainerName)
    {
        CloudStorageAccount storageAccount = 
CloudStorageAccount.Parse(Convert.ToString(ConfigurationManager.AppSettings["BlobConnectionString"]));
                    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
                    CloudBlobContainer blobContainer = blobClient.GetContainerReference(strBlobContainerName);

                    blobContainer.CreateIfNotExists();
                    blobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
                    return blobContainer;
     }

以下代码用于在Azure上上传文件。

CloudBlobContainer blobContainer = new BlobStorageServiceBLL().GetCloudBlobContainer(containerName);
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(uploadedFileName);
blob.UploadFromStream(file.InputStream);

注意:我的GetCloudBlobContainer方法进入BlobStorageServiceBLL控制器,该控制器是不同的类文件,但是您可以在同一类文件中对其进行管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM