如何将数据库中的图像检索到webform

时间:2014-12-28 15:01:02

标签: c# asp.net

我正在使用asp.net c#构建一个社交网站,并且我在检索图像时遇到问题,当我将图像上传到数据库时,它的名称将被更改,并且它保存在我提到的真实路径上。还有我想说它在数据库中保存为其名称。但我无法将其链接到webform。

html代码

<asp:Image ID="Pro_pic" runat="server" Height="233px" ImageUrl="~/Profile/Image/Default.png" style="margin-left: 8px; margin-top: 13px" Width="187px" />

这是文件背后的代码

 protected void Page_Load(object sender, EventArgs e)
{






        string db = "";
        db = ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(db);
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "SELECT * FROM [UserData] WHERE Email = '" + Session["Email"].ToString() + "'";
        cmd.Connection = con;
        SqlDataReader dr;
        dr = cmd.ExecuteReader();

        while (dr.Read())
        {

            Pro_pic.ImageUrl = @"C:\Users\Supun\Documents\Visual Studio 2013\WebSites\MeetYou\ProfilePic\"+dr["ProfilePic"];

        }

        con.Close();







}

这是sql代码

CREATE TABLE [dbo].[UserData] (
[YourName]    VARCHAR (50)  NULL,
[Email]       VARCHAR (50)  NOT NULL,
[Password]    VARCHAR (50)  NULL,
[Gender]      VARCHAR (50)  NULL,
[Birthday]    VARCHAR (50)  NULL,
[AboutMe]     VARCHAR (50)  NULL,
[Country]     VARCHAR (50)  NULL,
[ID]          NVARCHAR (50) NOT NULL,
[ProfilePic ] NVARCHAR (500)       NULL,
CONSTRAINT [PK_UserData] PRIMARY KEY CLUSTERED ([Email] ASC)

);

今天有人可以告诉我如何正确地获取这个图片网址吗?

我认为这个错误

Pro_pic.ImageUrl = @"C:\Users\Supun\Documents\Visual Studio 2013\WebSites\MeetYou\ProfilePic\"+dr["ProfilePic"];

2 个答案:

答案 0 :(得分:0)

您应该将包含图像的文件夹作为应用程序的子文件夹。将其直接放在应用程序之外的位置会导致此类访问问题。如果您将文件夹(让其命名为#34; Images&#34;)放在您的应用程序位置,那么您可以将ImageUrl属性指定为&#34;〜/ Images /&#34; +你的文件名。

答案 1 :(得分:0)

在Web环境(尤其是ASP.NET和MVC)中处理图像时,应遵循一定的准则。

  1. 尽量不要使用byte []流存储图像,然后使用缓慢且未经优化的查询从数据库重建图像。

  2. 标准方法是在根目录中创建一个/ Images文件夹,放置图像。

  3. 写一个类库:

    公共类QueryClass {     string img_url;     SqlConnection con = new SqlConnection(&#34; // CONNECTION_STRING&#34;);     SqlCommand cmd;     SqlDataReader阅读器;

    public string getImageUrl(){
        cmd=new SqlCommand("select * from UserData where WHERE Email = '" + Session["Email"].ToString() + "'",con);
        reader=cmd.ExecuteReader();
        while(reader.read()){
            img_url=reader[8].ToString();
            break;
        }
        return img_url;
    }
    
  4. 将url(或Uri)存储到图像中,即Image Path示例:/Images/tree.png并将其绑定到图像控件。

  5. 将Url字符串存储为数据库实体,并通过查询检索它。 示例:SELECT img FROM Users WHERE username=@uname

  6. 运行查询并将网址存储在一个字符串string img_url=QueryClass.getImageUrl();

  7. 最后使用Pro_pic.ImageUrl= "/Images/"+img_url;