浏览器FileContentResult中的问题渲染图像

时间:2011-06-01 07:32:57

标签: image asp.net-mvc-2

我想显示数据库中的图像

我有一个动作

 public FileContentResult GetImage(string param)

        {

      type obj  = _someRepository.GetType(param);

            if (obj!= null && obj.Image!= null)
            {

                return File(obj.Image.ToArray(), obj.Image.MimeType);
            }

            return "some default image";
        }

在我的视图中

< img src="<%:Url.Action("GetImage","ControllerName",new { param= somevalue })%>"  alt="some text"
            width="100px" height="100px" />

我也有

 (Html.BeginForm("actionname", "controllername", FormMethod.Post, new { enctype = "multipart/form-data" })

集。

从数据库中提取图像数据但是我无法在浏览器中看到图像, 有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

以下是为了隔离问题而执行的步骤。从简单的控制器操作开始,该操作从硬盘驱动器返回一些硬编码图像:

public ActionResult GetImage(string param)
{
    byte[] image = File.ReadAllBytes(@"c:\work\foo.png");
    return File(image, "image/png");
}

现在直接导航到浏览器中的/ControllerName/GetImage,您就会看到图片。

下一步是从数据库中获取图像,并可能将其存储在硬盘上,以确保它是有效的图像:

type obj = _someRepository.GetType(param);
File.WriteAllBytes(@"c:\work\foo.png", obj.Image.ToArray());

现在检查生成的文件并查看它是否有效。最后一步是确保<img>标记中生成的网址与您用于直接测试的网址相同。然后查看FireBug's Net选项卡,查看浏览器是否正确请求图像以及服务器返回的内容。

最有可能的问题是从数据库返回的字节数组不是有效的图像,或者它是空的。

就您在问题中显示的表单而言,这是用于上传文件,它与从控制器操作提供动态图像无关,因此我看不出它可能与您的问题有什么关系。