![](/img/trans.png)
[英]C# WebAPI to download PowerPoint file using memory stream
[英]Download Blob file into Memory Stream from Azure using C#
我正在嘗試使用 C# 控制台應用程序從 Azure 讀取 blob。 我可以將 blob 文件下載到本地計算機並讀取它,但是當我嘗試將其下載到 memory stream 時,它會拋出附加錯誤。
我想直接讀取我的 blob 文件而不是將其下載到本地計算機,因為我必須將其部署在 Azure 中。 有什么建議嗎?
var storageaccount = new CloudStorageAccount(new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(StorageAccountName, StorageAccountKey), true);
var blobclient = storageaccount.CreateCloudBlobClient();
var container = blobclient.GetContainerReference("");
// var blobs = container.ListBlobs();
var blockBlobReference = container.GetBlockBlobReference(sourceBlobFileName);
using (var memorystream = new MemoryStream())
{
blockBlobReference.DownloadToStream(memorystream);
}
我試過你的代碼,但 Blob 下載成功。
您的屏幕截圖僅顯示了 Visual Studio 調試器中的變量,看起來該錯誤實際上並未發生。
在屏幕截圖中, MemoryStream
、 CanTimeout
屬性設置為false
。 因此,似乎ReadTimeout
和WriteTimeout
拋出異常只是因為 MemoryStream 不支持它們。
參考:
請注意,除非您使用ReadTimeout
和WriteTimeout
屬性,否則不會發生異常。
我認為問題在於您將其包裝在 using 語句中。 嘗試以下操作:
var storageaccount = new CloudStorageAccount(new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(StorageAccountName, StorageAccountKey), true);
var blobclient = storageaccount.CreateCloudBlobClient();
var container = blobclient.GetContainerReference("");
// var blobs = container.ListBlobs();
var blockBlobReference = container.GetBlockBlobReference(sourceBlobFileName);
var memorystream = new MemoryStream();
blockBlobReference.DownloadToStream(memorystream);
byte[] content = memoryStream.ToArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.