簡體   English   中英

下載 Blob 文件到 Memory Stream 從 Azure 使用 ZD7EFA19FBE74D3972FDZ5ADB6D

[英]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 調試器中的變量,看起來該錯誤實際上並未發生。

在屏幕截圖中, MemoryStreamCanTimeout屬性設置為false 因此,似乎ReadTimeoutWriteTimeout拋出異常只是因為 MemoryStream 不支持它們。

參考:

請注意,除非您使用ReadTimeoutWriteTimeout屬性,否則不會發生異常。

我認為問題在於您將其包裝在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM