Azure Blob不是从ASP.Net表单创建的

时间:2017-06-21 17:35:45

标签: asp.net azure

我正在尝试将图像文件(JPG)上传到Azure Blob存储。我正在使用以下代码

var credentials = new StorageCredentials(name, key);
CloudStorageAccount cso = new CloudStorageAccount(credentials, true);
CloudBlobClient blobClient = cso.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("containerName");
string photoName = e_name + e_cr;
CloudBlockBlob blob = container.GetBlockBlobReference(photoName);
blob.Properties.ContentType = "image/jpg";
blob.UploadFromStreamAsync(img.OpenReadStream());

我的问题是代码实际上并没有在我的容器中创建blob。我已经多次运行(昨晚一次,今天大约三到四次),昨晚的尝试成功,但它不再有效。我已经为我的容器尝试了Blob和Container访问类型,所以我认为不是这样。 img是一个IFormFile,name,key,photoName,e_name和e_cr都是字符串

2 个答案:

答案 0 :(得分:0)

未创建blob的一个可能原因可能是您尝试异步创建blob

blob.UploadFromStreamAsync(img.OpenReadStream());

但是,您并没有等待此异步操作完成。请将以上代码行更改为:

await blob.UploadFromStreamAsync(img.OpenReadStream());

这应该有所不同。请注意,您调用此代码的方法(我假设它是控制器操作)也应声明为异步。

答案 1 :(得分:0)

根据您的代码,很少有事情要关注

  • 将容器名称更新为" containername"因为名称应包含小写字母。
  • 在第4行之后添加以下行 - 如果已在存储中创建了containername,则不需要这样做。

    await extractcontainer.CreateIfNotExistsAsync();

  • 检查容器和blob here的名称限制,并确保photoName值符合限制。

  • 更改Gaurav Mantri建议的更改。