2

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

在用户个人资料页面上有一个图像<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 表中检索照片的代码。请注意,照片是从 db 中检索到的byte[]

byte[] barrImg = usr.GetProfilePhoto(id);

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

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

问题 2:有人可以提出任何更好的替代建议 /samples/pointers 来实现涉及 Jquery/Ajax /javascript 的相同功能

先感谢您

4

1 回答 1

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})"
于 2013-07-09T05:18:42.957 回答