Я пытаюсь загрузить файл из cloudBlob через поток. Я ссылаюсь на эту статью CloudBlob
Вот код для загрузки blob
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();
}
}
Но я всегда получаю нулевое значение. Ниже приведено содержимое потокового файла.
Что не так с этим? Пожалуйста, помогите.
EDIT
Установка позиции на 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;
}