26 votos

ASP.NET MVC FileStreamResult no funciona como debería

Tengo el siguiente código que me despojado de cualquier no-esencial líneas para dejar el mínimo reproducable caso. Lo que espero es que para volver a la imagen, pero no es así. Tan lejos como puedo ver devuelve un archivo vacío:

public ActionResult Thumbnail(int id) {
    var question = GetQuestion(db, id);
    var image = new Bitmap(question.ImageFullPath);
    MemoryStream stream = new MemoryStream();
    image.Save(stream, ImageFormat.Jpeg);
    return new FileStreamResult(stream, "image/jpeg");
}

Puede usted identificar lo que está mal con este código? En el depurador se puede ver que la corriente crece en tamaño de lo que parece ser la obtención de los datos aunque no he sido capaz de verificar que los datos correctos. No tengo idea de cómo depurar el FileStreamResult sí mismo.

67voto

Martin Liversage Puntos 43712

Es necesario insertar

stream.Seek(0, SeekOrigin.Begin);

después de la llamada a

Image.Save()

Este rebobina la secuencia de inicio de la imagen guardada. De lo contrario, la corriente será colocada en la final de la corriente y nada es enviado al receptor.

11voto

tvanfosson Puntos 268301

Trate de rebobinado de la MemoryStream. El "cursor" a la izquierda al final de el archivo y no hay nada para leer hasta que "rebobinar" la secuencia de inicio.

 image.Save( stream, ImageFormat.Jpeg );
 stream.Seek( 0, SeekOrigin.Begin );
 return new FileStreamResult( stream, "image/jpeg" );

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X