![](/img/trans.png)
[英]How do I upload an image to a specific directory in my Azure blob storage from my ASP.NET Core application?
[英]How to Upload Image From Asp.net Core IFormFile to Azure Blob Storage?
我正在嘗試將圖像上傳到 azure blob 存儲。 但是,當我在 azure 上查看最終結果時,它只會創建一個空文件。
[HttpPost("Import")]
public IActionResult Import(IFormFile filepond)
{
const string accountName = "accountName";
const string key = "key14881851";
var storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, key), true);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExistsAsync();
container.SetPermissionsAsync(new BlobContainerPermissions()
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
var blob = container.GetAppendBlobReference("test.jpg");
blob.UploadFromStreamAsync(filepond.OpenReadStream());
return Ok();
}
一些問題(除了為什么我得到一個空文件)。
...我是否需要等待它們才能正常工作(即,如果容器不存在,則在將文件寫入容器之前創建它)
是的。 異步方法返回一個任務,您必須等到該任務完成。 這就是為什么你的文件是空的。
我是否需要將 UploadFromStreamAsync 包裝在 using 語句中。
我會稱它為更清潔,而我不確定這里是否絕對有必要。
我會這樣寫(未測試):
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("mycontainer");
await container.CreateIfNotExistsAsync();
container.SetPermissionsAsync(new BlobContainerPermissions()
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
var blob = container.GetBlockBlobReference("test.jpg");
using(var stream = filepond.OpenReadStream()) {
await blob.UploadFromStreamAsync(stream);
}
請注意,我用 GetBlockBlobReference() 替換了 GetAppendBlobReference()。
帶有示例的文檔https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet?tabs=windows
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.