当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET数据库存取图片的方法

ASP.NET数据库存取图片的方法

2017年12月08日  | 移动技术网IT编程  | 我要评论

17岁的少女,科大讯飞股吧,波多野结衣做爰图

当我们有大量的图片或者图片比较大时,我们常规的做法可能是保存图片路径,但是也不排除需要将图片直接存放到数据库的情况,此时就需要保存图片到数据库了。这篇文章我会向大家介绍:

如何通过fileupload控件将图片保存到数据库
如何通过button控件从数据库导出图片

具体步骤如下:

保存图片到数据库

第一步:首先在数据库创建一个名为“images”的表,代码如下:

create table images
( 
roll_no varchar(12) primary key,
name_file varchar(100),
extension varchar(100) , 
img varbinary(max) ,
img_date datetime 
) 

可以看到这个表存储了这些内容:图片的登记号、文件名、文件扩展名、二进制数据以及上传时间。

第二步:然后打开visual studio,创建一个空网站,命名为”imagetobinary”。

第三步:再添加一个新页面,命名为“conversion.aspx”

在这个页面我们拖进textbox , fileupload, button这三个控件。

界面如图:

当然你也可以选择在conversion.apsx文件直接输入这串代码:

文件序号
<asp:textbox id="txtrollno" runat="server">
</asp:textbox>
<br />

选择文件
<asp:fileupload id="fileupload1" runat="server" />
<br />

<asp:button id="button1" runat="server"
text="上传" onclick="button1_click" />

第四步:控件添加后,双击button,进入conversion.apxs.cs文件,添加以下命名空间:

using system;
using system.data;
using system.data.sqlclient;
using system.io;
using system.web; 

然后在button1_click内编写代码,将图片转换为二进制流并通过sql语句保存到数据库中。

代码如下:

protected void button1_click(object sender, eventargs e)
{
 if (!fileupload1.hasfile) 
  {
  response.write("未选择文件");
  return;
  }


  else
  {
  //创建访问上传文件的对象,并获取上传的文件
  httppostedfile file = fileupload1.postedfile;

  //获取上传文件的文件名和扩展名
  string filename = path.getfilename(fileupload1.postedfile.filename); 
  string extension = path.getextension(filename); 
  
  //实例化一个byte数组,其长度等于上传文件的长度
  byte[] imagetype = new byte[file.contentlength];
  
  //将文件数据读取到byte数组中
  file.inputstream.read(imagetype, 0, file.contentlength); 

  //判断图片格式
  if ((extension == ".jpg") || (extension == ".png") || (extension == ".gif") || (extension == ".bmp"))
  {
   //表里写入数据
   using (sqlconnection connection = new sqlconnection("data source=afod3-609221015;initial catalog=mydata;integrated security=true"))
   {

   connection.open();
   sqlcommand cmd = new sqlcommand();
   cmd.connection = connection;

   string commandtext = "insert into images values (@image, @rollno,@img,getdate())";

   cmd.commandtext = commandtext;
   cmd.commandtype = commandtype.text;

   cmd.parameters.add("@image", sqldbtype.varbinary);
   cmd.parameters["@image"].value = imagetype;

   cmd.parameters.add("@rollno", sqldbtype.varchar);
   cmd.parameters["@rollno"].value = txtrollno.text;

   cmd.parameters.add("@img", sqldbtype.varchar);
   cmd.parameters["@img"].value = txtrollno.text;


   cmd.executenonquery();
   cmd.dispose();
   connection.close();

   response.write("导入成功");
   }
  }
  else
  {
   response.write("导入失败"); return;
  }
  }

运行结果如图:

这时我们就可以浏览文件夹添加需要存入的图片:

文件成功导入

如果选择了不符合条件的文件后,显示结果:

返回数据库,可以看到图片已经成功添加到数据库中了:

导出图片

现在我们看如何从数据库导出图片的,这里我会只使用button控件,简单概述一下。

第一步:在visual studio创建一个空网站,命名为“imagetobinary”。

第二步:再添加一个新页面,命名为"getimage.aspx"。在这个页面拖放一个button控件。

第三步: 双击button,进入”getimage.aspx.cs”,添加命名空间。

using system;
using system.configuration;
using system.data.sqlclient;
using system.io;

button1_click内编写代码:

protected void button1_click(object sender, eventargs e)
 {
 string sconn = configurationmanager.appsettings["connectionstring"];

 sqlconnection objconn = new sqlconnection(sconn);
 
 objconn.open();

 string sql = "select * from images";

 sqlcommand cmd = new sqlcommand(sql, objconn);
 
 sqldatareader dr = cmd.executereader();

 while (dr.read())

 {

  byte[] bytes = (byte[])dr["img"];

  filestream fs = new filestream(@"e:\images\" + dr["roll_no"] + ".jpg" , filemode.create, fileaccess.write);

  fs.write(bytes, 0, bytes.length);

  fs.flush();

  fs.close();

 }

 dr.close();

 objconn.close();
 
 response.write("成功导出"); 


 }

运行结果:

点击“导出”:

打开指定的文件夹,图片已经保存在里面了:

最后,如果有需要,你还可以参考这篇文章:如何保存pdf、word和excel文件到数据库中

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网