2017-06-21 71 views
0

我试图将图像文件(JPG)上载到Azure Blob存储。我使用下面的代码未从ASP.Net创建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,和名称,关键,photoName,e_name和e_cr都是字符串

回答

0

一个可能的原因无法创建可能是您想创建的斑点异步

blob.UploadFromStreamAsync(img.OpenReadStream()); 

然而斑点你不会等待这个异步操作完成。请将上面的代码行更改为:

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

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

0

根据你的代码,几件事情要在这里重点

  • 更新容器名称为“容器名称”作为名称应包含小写字母。
  • 在第4行之后添加下面的行 - 如果已经在存储中创建了容器名称,则不需要。

    await extractcontainer.CreateIfNotExistsAsync();

  • 检查容器的名称限制和blob here并确保photoName的值尊重限制。

  • 进行上述Gaurav Mantri建议的更改。