如预期的ASP.NET MVC FileStreamResult不工作(ASP.NET MVC Fi

2019-06-25 19:34发布

我有以下的代码,我去掉了任何非必要行离开最低限度的可再现的情况。 我期望的是它返回的形象,但事实并非如此。 至于我可以看到它返回一个空文件:

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");
}

你能找出什么不对的代码? 在调试器中,我可以看到流生长在大小,因此它似乎是获取数据,虽然我一直无法验证它的正确性。 我不知道如何调试FileStreamResult本身。

Answer 1:

你需要插入

stream.Seek(0, SeekOrigin.Begin);

在调用后

Image.Save()

这将流倒回到所保存的图像的开始。 否则,流将被定位在流的末尾并没有什么被发送到接收器。



Answer 2:

复卷尝试将MemoryStream。 “光标”被留在文件的结尾并没有什么读,直到你“倒带”流开头。

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


文章来源: ASP.NET MVC FileStreamResult not working as intended