代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

ASP.NET MVC文件流结果未按预期工作

  •  26
  • Pablo Fernandez  · 技术社区  · 15 年前

    我有下面的代码,我去掉了任何不必要的行,以保留最低限度的可复制的情况。我期望它返回图像,但它没有返回。据我所见,它返回一个空文件:

    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本身。

    2 回复  |  直到 14 年前
        1
  •  67
  •   Martin Liversage    14 年前

    你需要插入

    stream.Seek(0, SeekOrigin.Begin);
    

    在接到电话后

    Image.Save()
    

    这将使流倒带到已保存图像的开头。否则,流将定位在流的末尾,不会向接收器发送任何内容。

        2
  •  11
  •   tvanfosson    15 年前

    尝试倒带内存流。“光标”留在文件的末尾,在您将流“倒带”到开头之前,没有可读取的内容。

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