Próbuję pobrać plik z CloudBlob przez strumień. Odsyłam do tego artykułu CloudBlobCloudBlob.DownloadToStream zwraca null
Oto kod, aby pobrać 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;
}
a kod aby przekształcić go w bajt tablicy
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();
}
}
ale zawsze wartość zerową. Poniżej znajduje się zawartość przesyłanego pliku.
Co jest nie tak z tym? Proszę pomóż.
EDIT
Ustawienie stanowiska, jakie 0 wewnątrz ReadFully
metody nie jest dozwolone, więc umieścić go wewnątrz DownloadBlobAsStream
To powinno działać teraz:
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;
}
Istnieją pewne nieporozumienie z twojej strony, jak na pewno można ustawić stanowisko 0 @ ReadFully jednak trzeba użyć „Input” obiekt. Pamięć obiektu ma zasięg lokalny wewnątrz funkcji DownloadBlobAsStream(), dlatego jeśli chcesz ustawić wartość mem.Position, należy to zrobić w tej funkcji, jednak gdy wywołasz ReadFully() i przekazujesz obiekt "Stream", możesz ustawić jego pozycję na 0 jako cóż, jak pokazałem w moim poście. Więc oba są akceptowane i będą działać. – AvkashChauhan
Jeśli ustawię Position = 0 wewnątrz ReadFully, spowoduje to błąd "Not Supported", a kiedy spróbuję spojrzeć na właściwość input, 'CanSeek = false', ale twój pomysł bardzo pomógł. :) – fiberOptics
Aby wyjaśnić czy otrzymujesz wartość pustą lub pustą tablicę bajtów? Nie widziałem wartości pustej, ale widziałem pustą tablicę bajtów w moich testach bez jakiejkolwiek zmiany pozycji strumienia. – kendaleiv