c# - crear - cargando al almacenamiento azul de memorystream devolviendo un archivo vacío
memorystream to string (1)
Estoy escribiendo un System.Drawing.Bitmap para el almacenamiento de Azure usando una secuencia de memoria. Tengo las credenciales correctas y todos los cables laterales azules están correctamente alineados. He subido una imagen en un blob con éxito utilizando una secuencia de entrada, así que creo que debe haber un problema con la forma en que estoy usando el objeto de secuencia de memoria.
Después de mirar durante un rato, la solución general a mi problema parecía ser establecer la posición de la corriente de memoria en 0, sin embargo, eso no me ha funcionado y todavía se está guardando un archivo vacío en azul.
mi código es:
using (image)
{
System.IO.MemoryStream ms = new MemoryStream();
//create an encoder parameter for the image quality
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
//get the jpeg codec
ImageCodecInfo imgCodec = ImageUtilities.GetEncoderInfo(CodecInfo);
//create a collection of all parameters that we will pass to the encoder
EncoderParameters encoderParams = new EncoderParameters(1);
//set the quality parameter for the codec
encoderParams.Param[0] = qualityParam;
//Move the pointer to the start of stream.
ms.Position = 0;
image.Save(ms, imgCodec, encoderParams);
blockBlob.UploadFromStream(ms);
}
El elemento de imagen que se guarda al final tiene datos en él. en debug tiene la longitud correcta, etc. por lo que el problema está en algún lugar del paso de carga
Tienes que rebobinar tu memoria Stream luego de guardar la imagen y antes de subirla:
//...
//Move the pointer to the start of stream.
ms.Position = 0;
image.Save(ms, imgCodec, encoderParams);
//HERE !!!
ms.Position = 0;
blockBlob.UploadFromStream(ms);
}