ASP.NET MVC FileStreamResult未按预期工作

pup*_*eno 26 asp.net-mvc stream filestreamresult

我有以下代码,我从任何非必要的行中删除了离开minimun可再现的情况.我期望它能够返回图像,但事实并非如此.据我所知,它返回一个空文件:

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");
}
Run Code Online (Sandbox Code Playgroud)

你能确定这段代码有什么问题吗?在调试器中,我可以看到流的大小增长,所以它似乎获取数据,虽然我无法验证它是正确的数据.我不知道如何调试FileStreamResult本身.

Mar*_*age 67

你需要插入

stream.Seek(0, SeekOrigin.Begin);
Run Code Online (Sandbox Code Playgroud)

打电话给

Image.Save()
Run Code Online (Sandbox Code Playgroud)

这会将流回放到已保存图像的开头.否则,流将位于流的末尾,并且不会向接收器发送任何内容.


tva*_*son 11

尝试倒回MemoryStream."光标"留在文件的末尾,在您将流"回放"到开头之前没有任何内容可读.

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