【问题标题】:FileStreamResult displays empty browser document when rendering image from stream in MVC3FileStreamResult 在 MVC3 中从流中渲染图像时显示空浏览器文档
【发布时间】:2011-07-04 06:19:47
【问题描述】:

我在一个 MVC3 应用程序中有一个相当简单的动作,它应该呈现一个图像......

  public FileStreamResult Photo(int id)
    {
        //get the raw bytes for the photo
        var qry = from p in db.Photos
                  where p.PhotoID == id
                  select p.PhotoData;
        var data = qry.FirstOrDefault();

        var mem = new MemoryStream(data);
        var fs = new  FileStreamResult(mem, "image/jpeg");
        return fs;
    }

当我运行它时,我在 Chrome 中得到一个空白文档,Firefox 在实际文档区域显示 URL,而 IE 呈现原始字节。

Chrome 给我一条消息:资源解释为文档,但使用 MIME 类型图像/jpeg 传输

这表明流数据没有发送到浏览器,实际上它正在接收一个空文档,但 IE 建议相反。

以前有人遇到过这种情况,或者知道如何解决吗?

【问题讨论】:

    标签: asp.net-mvc-3 filestreamresult


    【解决方案1】:

    如果您已经有照片的字节数组,则不需要流:

    public ActionResult Photo(int id)
    {
        var data = db.Photos.FirstOrDefault(p => p.PhotoID == id);
        if (data == null)
        {
            return HttpNotFound();
        }
        return File(data.PhotoData, "image/jpeg");
    }
    

    您的代码的问题是您需要在开始时重置内存流,但正如我所说,您不需要所有这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多