2017-11-20 8 views
0

AzureからC#を使用してファイルをダウンロードし、そのリターン後にMemoryStreamにストリーミングしたい(AzureのBLOBに行くAzure URI) - ユーザーはフロントエンドでユーザーに表示することができますそれらのPDFファイルをブラウザーでダウンロードするか、ダウンロードしてください。 Azureには複数のブロブ/ファイルがありますので、各ファイルをループしてストリームにダウンロードしたいと考えています:foreachを使用しています。ファイルを参照してAzure Blobsをダウンロードするには?

私はこれらのBLOBをどのように参照することができないのですか?CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);ここでは特定のファイルの名前を付けることができましたが、複数のファイルがありますので、ここに "fileName"

コード:

var files = container.ListBlobs(); 

foreach (var file in files) 
{ 
    using (var memoryStream = new MemoryStream()) 
    { 
     CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName); 
     blockBlob.DownloadToStream(memoryStream); 
    } 
} 

私はコードで今訂正ループして、すべてのブロブをダウンロードしてるかどうかわからないんだけど?

また、fileNamefile.Uri.Segments.Last()- に置き換えようとしましたが、どれがblobの名前になるかはわかりません。

私が抱えている問題は、フロントエンドでリンクを使用しようとするたびにforeachがただ1つのPDFファイルを取得しているということです。だから、どうすれば各ファイルを適切にループしてダウンロードできるのか知る必要がありますか?

+0

@ScottChamberlain - この作品の後に実際に、私はコンテナだけで、しかし、読み取りアクセス権を持つように、そのユーザーは短期間しかこれらのリンクを使用することができますので、あなたには、いくつかの他の方法をしている場合、SASを使用することを考えていましたそれは私に知らせてくれるでしょう。 – Pathankotia

+0

私は、それぞれのBLOBのbyte []をcontent-type&fileという名前のユーザーに返す方法を持っています。まずストリームにダウンロードしてから、これらのファイルをbyte []に​​変換して戻したい。 – Pathankotia

+0

投稿したコードを実行しようとすると何がうまくいかないか教えてください。あなたは予期せぬエラーを起こしていますか?詳細を追加するには、質問を編集してください。 –

答えて

1

したがって、どのように各ファイルを適切にループしてダウンロードすることができますか?

メモリから複数のファイルを直接ダウンロードすることはできません。 zipファイルを使用できる場合は、zipファイルなどの圧縮ファイルを使用して複数のファイルを転送することができます。以下は私のデモコードですが、私の側で正しく動作します。

using (var ms = new MemoryStream()) 
    { 
     using (var zipArchive = new ZipArchive(ms, ZipArchiveMode.Create, true)) 
     { 
      foreach (var file in files) 
      { 
       if (file.GetType() != typeof(CloudBlockBlob)) continue; 
       var blob = (CloudBlockBlob) file; 
       var entry = zipArchive.CreateEntry(blob.Name, CompressionLevel.Fastest); 
       using (var entryStream = entry.Open()) 
       { 
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob.Name); 
        blockBlob.DownloadToStream(entryStream); 

       } 
      } 
     } 
    } 
関連する問題