MVC4从SQL Server表中检索图像文件到html图像

时间:2013-07-09 05:14:34

标签: c# sql-server jquery asp.net-mvc-4 razor

我尝试在MVC4 Web应用程序上创建用户个人资料页面。

在userprofile页面上有一个图像<img />标签,用于显示个人资料照片。在图片下方,有“浏览”,“上传”按钮供用户浏览和上传照片。在单击上载按钮时,它应将照片上载到SQL Server并在配置文件页面上显示图像。

我可以上传照片并保存到SQL Server表格。现在我想将照片从SQL Server表中检索到配置文件页面。

这是我的用户个人资料页面/.cshtml页面(剃刀视图)

@model MvcSamples.Models.UserPicModel

@{

    ViewBag.Title = "PersonalInfo";
}

<h2>PersonalInfo</h2>

<form action="/UserDetails/PersonalInfo"  method="post" enctype="multipart/form-data">
        <img src="" alt="ProfilePhoto" />
    <label for="photo">Photo:</label>
    <input type="file" name="photo" id="photo" />
    <input type="submit" value="Upload" />

</form>

这是我用来从SQL Server表中检索照片的代码。请注意,照片是从byte[]

中检索到的
byte[] barrImg = usr.GetProfilePhoto(id);

当我调试时,我可以看到照片被检索到“barImg”。

我的问题1 :从这里我怎样才能将此内容发送到<img src="" alt="ProfilePhoto" />,以便它会在个人资料页面上显示实际照片?

问题2:有人可以建议任何更好的替代建议/样本/指针来实现涉及Jquery / Ajax / javascript的相同功能

提前谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用FileResult将二进制数据发送到响应。

public FileResult GetProfileImage(int id)
{
    var usr = new Whatever();
    byte[] barrImg = usr.GetProfilePhoto(id);
    return File(barrImg, "image/png");
}

您可以将其用作

 <img src="@Url.Action("GetProfileImage", "Controller", new { id = 5})"