0
我有一種方法將圖像上傳到Azure blob存儲。我已經創建了我的帳戶,並在我的應用中放置了名稱和密鑰。我看到的行爲是await UploadFromByteArrayAsync(...)
返回並且我的方法返回一個URL。但是,當我導航到Microsoft Azure存儲資源管理器中的azure blob存儲時,可以看到沒有創建blob。顯然,導航到該方法返回的URL也會返回404。該方法已經成功創建了我的容器,因此與我的存儲帳戶有適當的權限的明確連接,我檢查了字節數組的內容並且它包含實際數據。有誰知道爲什麼我的圖像從未上傳?CloudBlockBlob.UploadFromByteArrayAsync返回,但沒有圖像創建
public async Task<string> UploadImage(byte[] imageByteArr)
{
// Retrieve storage account from the connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=redacted;AccountKey=redacted;EndpointSuffix=core.windows.net");
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("user-images");
// Create the container if it doesn't already exist.
await container.CreateIfNotExistsAsync().ConfigureAwait(false);
var docId = Guid.NewGuid().ToString();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(docId);
await blockBlob.UploadFromByteArrayAsync(imageByteArr, 0, imageByteArr.Length);
blockBlob.Properties.ContentType = "image/jpg";
await blockBlob.SetPropertiesAsync();
return blockBlob.Uri.ToString();
}
我很想知道你是怎麼調用這個'UploadImage'方法的?你是否在等待這個完成執行? –
似乎是在等待上調用UploadImage的問題。嘗試在UploadImage的返回值上調用「Result」屬性。有關如何調用異步方法的更詳細說明,可以查看此回覆 - http://stackoverflow.com/questions/9343594/how-to-call-asynchronous-method-from-synchronous-method-in-c – alwayslearning
你可以在上傳後插入blockBlob.ExistsAsync()調用來查看它是否存在嗎?您可能只是沒有在瀏覽器中查看網址的權限。 – JLaanstra