base64图像不在mvc视图中显示

问题描述 投票:0回答:1

我想在mvc中显示图像图像存储在数据库类型的文件是图像,我想先得到图像我转换字节然后我想在视图中显示我正在尝试一切但图像不显示只有空白矩形显示。

conn.Open();

using (SqlCommand cmd1 = new SqlCommand("select  isnull(ClientPic,'') as ClientPic from MembersDetail where Srno=1 and MemberShipID='" + clsCommon._MembershipID + "'", conn))
{
    cmd1.CommandType = CommandType.Text;

    SqlDataAdapter ad = new SqlDataAdapter(cmd1);
    DataTable mdt_pic = new DataTable();
    ad.Fill(mdt_pic);

    for (int i = 0; i < mdt_pic.Rows.Count; i++)
    {
        ViewBag.Pic = obj_u.ClientPic = "data:image/png;base64," + Convert.ToBase64String((byte[])mdt_pic.Rows[i]["ClientPic"]);   
    }
    conn.Close();
}

<img src="@ViewBag.Pic" alt="User" />
c# asp.net-mvc-4 model-view-controller ado.net
1个回答
0
投票

您不需要使用base64。您应该将文件作为FileContentResult获取

public ActionResult GetFile() // note should accept an id or something
{
    byte[] bytes = null;
    conn.Open();
    using (SqlCommand cmd1 = new SqlCommand("select  isnull(ClientPic,'') as ClientPic from MembersDetail where Srno=1 and MemberShipID='" + clsCommon._MembershipID + "'", conn))
    {
        cmd1.CommandType = CommandType.Text;

        SqlDataAdapter ad = new SqlDataAdapter(cmd1);
        DataTable mdt_pic = new DataTable();
        ad.Fill(mdt_pic);

        for (int i = 0; i < mdt_pic.Rows.Count; i++)
        {
             bytes = (byte[])mdt_pic.Rows[i]["ClientPic"];
        }
        conn.Close();

    }
    return new FileContentResult(bytes, "image/png"); // content type may be different for any file
}

然后在src中调用该动作:

<img src="GetFile" alt="User" />
© www.soinside.com 2019 - 2024. All rights reserved.