ストリーム経由で cloudBlob からファイルをダウンロードしようとしています。この記事を参照しますCloudBlob
ブロブをダウンロードするコードは次のとおりです
public Stream DownloadBlobAsStream(CloudStorageAccount account, string blobUri)
{
Stream mem = new MemoryStream();
CloudBlobClient blobclient = account.CreateCloudBlobClient();
CloudBlockBlob blob = blobclient.GetBlockBlobReference(blobUri);
if (blob != null)
blob.DownloadToStream(mem);
return mem;
}
そしてそれをバイト配列に変換するコード
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
しかし、私は常に null 値を取得します。以下は、ストリーミングされたファイルの内容です。
これの何が問題なのですか?助けてください。
編集
メソッド内で Position を 0 に設定するReadFully
ことは許可されていないため、内部に配置しますDownloadBlobAsStream
これで動作するはずです:
public Stream DownloadBlobAsStream(CloudStorageAccount account, string blobUri)
{
Stream mem = new MemoryStream();
CloudBlobClient blobclient = account.CreateCloudBlobClient();
CloudBlockBlob blob = blobclient.GetBlockBlobReference(blobUri);
if (blob != null)
blob.DownloadToStream(mem);
mem.Position = 0;
return mem;
}