mvc服务文件流的真正方式是什么?

时间:2011-12-15 22:49:06

标签: asp.net-mvc filestream

我有一种不正确的方法让asp.net mvc服务于文件流。它看起来像这样:

    public void SlideThumbnail(Guid id, int? width, int? height)
    {
        /*make the thumbnail code here*/

        using (Bitmap thumbnail = imageThumb.Generate(path))
        {
            var msOutput = new MemoryStream();

            thumbnail.Save(msOutput, ImageFormat.Png);
            Response.ContentType = "image/png";
            msOutput.WriteTo(Response.OutputStream);
        }
    }

这是超级duper。我尝试修改代码以使用base.File()代替。像这样:

    public ActionResult SlideThumbnail(Guid id, int? width, int? height)
    {
        /*make the thumbnail code here*/

        using (Bitmap thumbnail = imageThumb.Generate(path))
        {
            var msOutput = new MemoryStream();

            thumbnail.Save(msOutput, ImageFormat.Png);
            return base.File(msOutput, "image/png");
        }
    }

但这一切似乎都没有做任何事情。我没有得到任何错误,但我也没有得到任何图像: - (

那么我如何以MVC的方式实现这一目标呢?

1 个答案:

答案 0 :(得分:0)

我们想通了。我只需要添加:

thumbnail.Save(msOutput, ImageFormat.Png);
msOutput.Seek(0, SeekOrigin.Begin); // <--- this line
return base.File(msOutput, "image/png"); 

我们都很好。