2017-06-21 34 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建議的更改。