Estoy intentando descargar un archivo de cloudBlob a través de la transmisión. Me refiero a este artículo CloudBlobCloudBlob.DownloadToStream devuelve nulo
Este es el código para descargar la burbuja
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;
}
Y el código para convertirlo en el conjunto de bytes
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();
}
}
Pero siempre me dan valor nulo. A continuación se muestra el contenido del archivo de transmisión.
Qué hay de malo en esto? Por favor ayuda.
EDITAR
Ajuste de la posición a 0 en el interior ReadFully
método no está permitido, así que lo puse en el interior DownloadBlobAsStream
Esto debería funcionar ahora:
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;
}
hay un malentendido de su parte como seguro que puede fijar la posición de 0 @ ReadFully sin embargo es necesario utilizar el objeto de "entrada". Object mem tiene alcance local dentro de DownloadBlobAsStream() por eso, si desea establecer mem.Position debe hacerlo en esta función; sin embargo, cuando llama a ReadFully() y pasa su objeto "Stream", puede establecer su posición en 0 como bueno, como mostré en mi publicación. Entonces ambos son aceptados y funcionarán. – AvkashChauhan
Si configuro Position = 0 dentro de ReadFully, arroja un error "No admitido", y cuando trato de ver la propiedad de entrada, 'CanSeek = false' pero su idea ayudó mucho. :) – fiberOptics
¿Solo para aclarar está obteniendo un valor nulo o una matriz de bytes vacía? No he visto un valor nulo, pero he visto una matriz de bytes vacía en mis pruebas sin cambiar de ninguna forma la posición de la secuencia. – kendaleiv