当前位置:首页 > 行业动态 > 正文

ASP.NET上传图片至数据库保存流程详解的代码实现?

在ASP.NET中,将图片上传并保存到数据库的代码通常涉及以下步骤:1. 创建一个文件上传控件。,2. 获取上传的文件数据。,3. 将文件数据转换为字节数组。,4. 将字节数组存储到数据库中。以下是一个简单的示例代码:“ csharp,protected void UploadButton_Click(object sender, EventArgs e),{, if (FileUploadControl.HasFile), {, byte[] imageData = null;, using (var binaryReader = new BinaryReader(FileUploadControl.PostedFile.InputStream)), {, imageData = binaryReader.ReadBytes(FileUploadControl.PostedFile.ContentLength);, } string connectionString = "your_connection_string";, using (SqlConnection con = new SqlConnection(connectionString)), {, string query = "INSERT INTO ImagesTable (ImageData) VALUES (@ImageData)";, using (SqlCommand cmd = new SqlCommand(query, con)), {, cmd.Parameters.AddWithValue("@ImageData", imageData);, con.Open();, cmd.ExecuteNonQuery();, con.Close();, }, }, },},` 这段代码展示了如何从文件上传控件中读取文件数据,并将其作为字节数组存储到SQL Server数据库中。请确保替换your_connection_string`为实际的数据库连接字符串,并根据需要调整表名和列名。

ASP.NET中,上传图片并保存到数据库是一个常见的需求,下面将详细介绍如何实现这一功能,包括两种方法:上传图片的相对路径和以二进制流的方式整体上传图片。

方法一:上传图片的相对路径

1、数据库设计

创建一个名为Images的表,包含两个字段:

Image_ID:int类型,主键,自增。

Image_Wpath:varchar(50)类型,用于保存图片的相对路径。

2、前端页面(aspx)

使用FileUpload控件允许用户选择图片,一个Button控件用于触发上传操作,一个TextBox控件用于输入要查询的图片ID,以及一个Image控件和一个Label控件用于显示图片和相对路径。

示例代码:

 <asp:FileUpload ID="FileUpload1" runat="server" />
     <asp:Button ID="Button1" runat="server" Text="上传" OnClick="Button1_Click" />
     <asp:TextBox ID="TextBox1" runat="server" />
     <asp:Button ID="Button2" runat="server" Text="显示" OnClick="Button2_Click" />
     <asp:Image ID="Image1" runat="server" />
     <asp:Label ID="Label1" runat="server" />

3、后端代码(C#)

Button1_Click事件中,获取文件名、文件类型,构建文件保存的相对路径和服务器路径,然后将图片保存到服务器指定位置,并将相对路径插入数据库。

Button2_Click事件中,根据输入的图片ID从数据库中查询图片的相对路径,然后设置Image控件的ImageUrl属性为该相对路径。

示例代码:

 protected void Button1_Click(object sender, EventArgs e)
     {
         string name = FileUpload1.FileName; //获取文件名
         string type = name.Substring(name.LastIndexOf(".") + 1); //获取文件类型
         string ipath = Server.MapPath("Image") + "\" + name; //获取文件路径
         string wpath = "Image\" + name; //设置文件保存相对路径
         string query1 = "insert into Images values('" + wpath + "')";
         if (type == "jpg" || type == "gif" || type == "bmp" || type == "png")
         {
             FileUpload1.SaveAs(ipath); //服务器保存路径
             sqlHelper.ExecterNonQuery(query1); //执行插入操作
         }
     }
     protected void Button2_Click(object sender, EventArgs e)
     {
         string query2 = "select  from Images where Image_ID=" + Convert.ToInt32(TextBox1.Text);
         SqlDataReader sdr = sqlHelper.GetReader(query2);
         string wpath2 = "";
         while (sdr.Read())
         {
             wpath2 = sdr[1].ToString(); //获得相对路径
         }
         sdr.Close();
         Image1.ImageUrl = wpath2; //图片显示路径就是相对路径
         Label1.Text = wpath2; //显示相对路径
     }

方法二:以二进制流的方式整体上传图片

1、数据库设计

创建一个名为Images的表,包含两个字段:

Image_ID:int类型,主键,自增。

Image_Content:image类型,用于以二进制形式保存图片。

2、前端页面(aspx)

与方法一类似,使用FileUpload控件、Button控件、TextBox控件、Image控件和Label控件。

3、后端代码(C#)

Button1_Click事件中,获取文件名、文件类型,读取图片文件的二进制内容,然后将其作为参数插入数据库。

示例代码:

 protected void Button1_Click(object sender, EventArgs e)
     {
         string name = FileUpload1.PostedFile.FileName;
         string type = name.Substring(name.LastIndexOf(".") + 1);
         FileStream fs = File.OpenRead(name);
         byte[] content = new byte[fs.Length];
         fs.Read(content, 0, content.Length);
         fs.Close();
         SqlConnection conn = new SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Pooling=False;Password=");
         SqlCommand cmd = conn.CreateCommand();
         conn.Open();
         cmd.CommandText = "insert into Images(Image_Content) values (@content)";
         cmd.CommandType = CommandType.Text;
         if (type == "jpg" || type == "gif" || type == "bmp" || type == "png")
         {
             SqlParameter para = cmd.Parameters.Add("@content", SqlDbType.Image);
             para.Value = content;
             cmd.ExecuteNonQuery();
         }
     }

通过以上两种方法,可以在ASP.NET中实现图片上传并保存到数据库的功能,第一种方法简单易行,但存在局限性;第二种方法虽然复杂一些,但更加灵活可靠,适用于需要在不同主机上显示图片的场景,在实际应用中,可以根据具体需求选择合适的方法。

0