[英]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.