0

我在 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 建议相反。

任何人都遇到过这个,或者知道如何解决它?

4

1 回答 1

3

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

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

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

于 2011-07-04T06:25:33.567 回答