如何将数据库中的图像检索到网络表单

本文关键字:图像检索 网络 表单 数据库 | 更新日期: 2023-09-27 18:35:24

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

网页代码

<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)

);

有朝一日可以告诉我如何正确获取此图像 URL 吗???

我认为这是错误的

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

如何将数据库中的图像检索到网络表单

您应该将包含图像的文件夹作为应用程序的子文件夹。将其直接放在应用程序外部的位置将导致此类访问问题。如果将文件夹(我们将其命名为"图像")放在应用程序位置,则可以将 ImageUrl 属性分配为"~/图像/"+ 文件名。

在 Web 环境中处理图像时,应遵循某些准则,尤其是 ASP.NET 和 MVC。

  1. 尽量不要使用字节 [] 流存储图像,然后使用既慢又未优化的查询从数据库重建它。

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

  3. 编写类库:

    公共类查询类{ 字符串img_url; SqlConnection con=new SqlConnection("//CONNECTION_STRING"); SqlCommand cmd; SqlDataReader reader;

    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),即图像路径示例:/Images/tree.png并将其绑定到图像控件。

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

  6. 运行查询并将 url 存储在字符串中,例如string img_url=QueryClass.getImageUrl();

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