浏览器FileContentResult中渲染图像时出现问题

问题描述

| 我想显示数据库中的图像 我有动作
 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\" })
组。 图片数据是从数据库获取的,但是我在浏览器中看不到图片, 有什么我想念的吗?     

解决方法

        这是我为了隔离问题将执行的步骤。从一个简单的控制器操作开始,该操作从您的硬盘驱动器中的某个地方返回一些硬编码的图像:
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>
标记中生成的url与用于直接测试的url相同。然后查看FireBug的“网络”选项卡,以查看浏览器是否正确请求了图像以及服务器返回了什么。 问题很可能是从数据库返回的字节数组无效图像或为空。 就您在问题中显示的形式而言,这是用于上传文件,与提供来自控制器动作的动态图像无关,因此我看不到它与您的问题可能有什么关系。