在数据库中 存储图片 以及 在界面中显示图片(存储图片路径)- 这种方法相对与存储二进制文件好
2015-01-26 21:39
816 查看
花了一下午时间,终于学会了在数据库中存储图片,以及在界面中显示图片了。
存储图片有两种方法:
一种是:直接把图片转换成二进制文件存储在数据库中。
一种是:存储图片的路径到数据库,用的时候直接调用路径给image等图像控件即可。
两种方法,有利有弊,第一种方法适合存储量少且重要的图片信息。第二种方法适合存储量大但不是太重要的图片。
我使用的是第二种方法,简单,实用。
下面就是我具体的实现过程:
首先我新建了两个网页文件,insert_photo.aspx / select_photo.apsx
第一个用来往数据库中存储照片,第二个是在网页中显示照片。
这是第一个网页文件的前台代码:
这是第一个网页文件的后台代码:
*解说上面的代码:
其中后台里面涉及到把本地磁盘上的图片,传到服务器中指定的文件夹中,所以在22, 24, 26行代码里调用系统方法,来获取文件的绝对路径,但是这种路径不能直接在页面中调用。
所以在30, 32行代码里,又自定义了一个路径,准确的说是用,图片的名称,加上前面自定义的相对路径。这样,在上传本地文件到服务器的时候,就用系统的那个路径,在界面调用的时候就用,自定义的那个路径。(在数据库中存储的就是自定义的路径)。
至此,向服务器中上传图片的代码就写好了。其中还用到一些ADO.NET和参数数组(防止SQL注入)的知识,整体来说就是这样,还不是很完善,在以后的使用中,看缺少什么功能,在加上就行了。
下面是第二个网页文件中的页面代码:
这是二个网页文件的后台代码:
*解说:
其中后台代码中,注释的代码,是可以用另一种方法去实现,我这里使用的是datatable 也可是使用SqlDataReader。
上面代码的前台没什么好说的,最关键是后台,后台代码中的和核心代码是这句:Image1.ImageUrl = pathfile;以及,如何使用datatable或者SqlDataReader。从数据库中取的数据,然后根据数据在表中的第几行第几列进行给相应的空间进行赋值。
这就是图片的上传以及显示,加油啊。问题肯定会出现,关键就是以平和的平和的心态去搜集资料去解决它。不要放弃,既然你都觉的这么难,那么别人坑定也会感觉到难,所以,到现在为止,就看谁更有耐性了,加油,骚年!
存储图片有两种方法:
一种是:直接把图片转换成二进制文件存储在数据库中。
一种是:存储图片的路径到数据库,用的时候直接调用路径给image等图像控件即可。
两种方法,有利有弊,第一种方法适合存储量少且重要的图片信息。第二种方法适合存储量大但不是太重要的图片。
我使用的是第二种方法,简单,实用。
下面就是我具体的实现过程:
首先我新建了两个网页文件,insert_photo.aspx / select_photo.apsx
第一个用来往数据库中存储照片,第二个是在网页中显示照片。
这是第一个网页文件的前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="photo_path.aspx.cs" Inherits="photo_path" Debug ="true"%> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> 图片ID:<asp:TextBox ID="txt_id" runat="server"></asp:TextBox> 图片描述:<asp:TextBox ID="txt_mark" runat="server"></asp:TextBox> <asp:FileUpload ID="inputfile" runat="server" /> <asp:Button ID="Button1" runat="server" Text="上传" OnClick ="Button1_Click"/> <asp:Label ID="Label1" runat="server"></asp:Label> </div> </form> </body> </html>
这是第一个网页文件的后台代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Configuration; using System.Data.SqlClient; using System.IO; public partial class photo_path : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { #region 用于把图片保存到网站指定的文件夹。 string filepath = HttpContext.Current.Server.MapPath("~/img/"); string filefullname = filepath + inputfile.FileName; inputfile.SaveAs(filefullname); #endregion #region 用于在数据库中存储图片的路径,因绝对路径不能用。所以使用自己定义的相对路径。 string filepath_2 = "~/img/"; string filefullname_2 = filepath_2 + inputfile.FileName; #endregion string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString; using (SqlConnection con = new SqlConnection(strcon)) { if (con.State == ConnectionState.Closed) { con.Open(); } //变量filefullname_2存放的是自定义的虚拟路径。 string sql = "INSERT INTO photo (id, mark, pathfile) VALUES (@id, @mark, @filefullname_2)"; SqlParameter[] para = new SqlParameter[] { new SqlParameter("@id", this.txt_id.Text), new SqlParameter("@mark", this.txt_mark.Text), new SqlParameter("@filefullname_2", filefullname_2) }; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddRange(para); if (Convert.ToInt32(cmd.ExecuteNonQuery()) > 0) { this.Label1.Text = "添加成功!"; this.txt_id.Text = ""; this.txt_mark.Text = ""; } else { this.Label1.Text = "添加失败!"; } } } }
*解说上面的代码:
其中后台里面涉及到把本地磁盘上的图片,传到服务器中指定的文件夹中,所以在22, 24, 26行代码里调用系统方法,来获取文件的绝对路径,但是这种路径不能直接在页面中调用。
所以在30, 32行代码里,又自定义了一个路径,准确的说是用,图片的名称,加上前面自定义的相对路径。这样,在上传本地文件到服务器的时候,就用系统的那个路径,在界面调用的时候就用,自定义的那个路径。(在数据库中存储的就是自定义的路径)。
至此,向服务器中上传图片的代码就写好了。其中还用到一些ADO.NET和参数数组(防止SQL注入)的知识,整体来说就是这样,还不是很完善,在以后的使用中,看缺少什么功能,在加上就行了。
下面是第二个网页文件中的页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="select_photo.aspx.cs" Inherits="select_photo" Debug ="true"%> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> 要查看的图片ID:<asp:TextBox ID="txt_id" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="查看" OnClick ="Button1_Click"/><br /> 描述:<asp:Label ID="Label1" runat="server"></asp:Label><br /> <asp:Image ID="Image1" runat="server" OnLoad ="Image1_Load"/> </div> </form> </body> </html>
这是二个网页文件的后台代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Configuration; using System.Data.SqlClient; using System.IO; public partial class select_photo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //其实是不需要使用的 } protected void Image1_Load(object sender, EventArgs e) { //这个其实也是不需要的,因为要输入ID去取的数据库中的图片路径,所以不能再初始化的时候就调用代码。 } protected void Button1_Click(object sender, EventArgs e) { string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString; using (SqlConnection con = new SqlConnection(strcon)) { if (con.State == ConnectionState.Closed) { con.Open(); } try { string sql = "SELECT mark, pathfile FROM photo WHERE ID = @ID"; SqlParameter[] para = new SqlParameter[] { new SqlParameter("@ID", this.txt_id.Text) }; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddRange(para); //SqlDataReader sdr = cmd.ExecuteReader(); //sdr.Read(); //string pathfile = sdr[0].ToString(); //string mark = sdr[1].ToString(); SqlDataReader dap = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(dap); string mark = dt.Rows[0][0].ToString(); //解析:由select语句,查询得到的是一行结果。 //那么dt.Rows[0][0].ToString();代表的就是第一行的第一列。对应的就是查询出的pathfile字段的值。 //dt.Rows[0][1].ToString();代表的就是第一行的第二列。对应查询出的就是mark字段的值。 string pathfile = dt.Rows[0][1].ToString(); Image1.ImageUrl = pathfile; Label1.Text = mark; } catch { Response.Write("输入的数据不正确!"); } } } }
*解说:
其中后台代码中,注释的代码,是可以用另一种方法去实现,我这里使用的是datatable 也可是使用SqlDataReader。
上面代码的前台没什么好说的,最关键是后台,后台代码中的和核心代码是这句:Image1.ImageUrl = pathfile;以及,如何使用datatable或者SqlDataReader。从数据库中取的数据,然后根据数据在表中的第几行第几列进行给相应的空间进行赋值。
这就是图片的上传以及显示,加油啊。问题肯定会出现,关键就是以平和的平和的心态去搜集资料去解决它。不要放弃,既然你都觉的这么难,那么别人坑定也会感觉到难,所以,到现在为止,就看谁更有耐性了,加油,骚年!
相关文章推荐
- Asp.net中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- Asp.net中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- MVC 保存二进制到数据库,并显示文件的方法(图片显示或下载文件)
- Asp.net 中图片存储数据库以及页面读取显示通用方法详解
- Asp.net 中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- 读取并显示以二进制的格式存储到数据库中图片
- 图片的二进制数据库存储和显示
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- .net 图片的二进制数据库存储和显示
- 图片、文件、二进制文件 三种资源不要放进数据库存储
- NET二进制图片存储与读取数据库的常见方法
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- 数据库中图片的二进制存储和显示
- xml Dom parser 读路径显示图片时应注意的问题以及firefox对空格、换行节点的处理方法
- 从数据库获取流文件,网页显示图片的方法~~
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- 与图片的二进制数据库存储和显示