Я пытаюсь загрузить файл из 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();
}
}
Но я всегда получаю нулевое значение. Ниже содержимое потокового файла.
Что не так? Пожалуйста, помогите
РЕДАКТИРОВАТЬ
Установка позиции на 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;
}