问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

asp.net(c#)将图片存入数据库存储过程代码.

发布网友 发布时间:2022-04-09 14:48

我来回答

2个回答

懂视网 时间:2022-04-09 19:10

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;
  }
  }
View Code

运行结果如图:

技术分享

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

技术分享

文件成功导入

技术分享

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

技术分享

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

技术分享

导出图片

现在我们看如何从数据库导出图片的,这里我会只使用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("成功导出"); 


 } 
View Code

运行结果:

技术分享

点击“导出”:

技术分享

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

技术分享

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

谢谢浏览!

 

ASP.Net数据库如何存取图片

标签:数据读取   取图   页面   char   语句   button   sys   response   nec   

热心网友 时间:2022-04-09 16:18

其实
只有一条添加的SQL语句,不需要存储过程,
insert
into
ImageStore
values(,,,,,)首先将
图片转换成二进制数据private
Byte[]
setPhotoByte(string
photoPath)
{
if
(photoPath
!=
null
)
{
string
str
=
photoPath;//保存传入的路径
//将传入路径下的图片以文件方式打开
file
=
new
FileStream(str,
FileMode.Open,
FileAccess.Read);//以只读方式打开传入路劲下的图片
Byte[]
byteSQLData
=
new
byte[file.Length];
file.Read(byteSQLData,
0,
byteSQLData.Length);//将文件中的数据读入到创建的byte数据中
file.Close();
MessageBox.Show(photoPath);
return
byteSQLData;
}
}需要传一个参数
,文件路径,可以用
OpenFileDialog
选择图片最后将转换好的二进制数据
byteSQLData
直接保存到数据库
表的字段ImageData
中完成保存显示图片:
将数据库中数据图片控件
.Image
=Image
.FromStream
(new
MemoryStream
(Byte[]
数据库数据));
即可显示该图片
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
13岁一直到18岁晚上经常熬夜会有什么影响 具象表现素描内容简介 ...| 从14世纪文艺复兴到20世纪具象表现绘画 · 168幅画 · 图解西方... 【漫画赏析】比喻具象化——《孤高之人》手法分析 具象美术作品有哪些 具象艺术艺术家介绍 话说 曾经有个演唱会 是初音未来演唱会 39祭 谁知道微信聊天记录删掉了,还能恢复过来吗?有什么软件可以恢复吗?不... 六爻。测缘分。测婚姻 礼仪起源于祭祀的证据是什么? 怀孕多久才能感觉到胎儿心脏跳动? 怀孕初期有胎心能感觉得到吗 胎心简而言之就是胎儿的心跳,胎儿的心跳频率是多少呢? 孕几周能听到胎心 怀孕多久才能看见胎心? 怀孕几月胎儿有胎心 哪里可以办信用卡?信用卡申请怎么提高通过率? 高德地图的EG导航收费记录已开启是什么意思? 怀孕第几周才有胎心 高德地图查etc对账助手,车牌号显示的不是自己的车 潮汕烧瓦窖有什么尺寸吗? ETC发票怎么跟银行明细对账 近几年中秋节新 习俗 etcp怎样删除在场记录? 在中秋节时,一些地方为什么要“拜月娘”? 中秋节为什么要烧瓦缶 正交试验助手不能设计4因素4水平吗?下载了个正交助手,可是没有4因素4水平的表头设计,怎么办呢? ETC助手充值记录能删除吗? 有谁有正交设计助手的软件包,求助,毕业论文要死了 小红帽linux系统下只能支持fat32格式的移动硬盘吗? 宝宝几个月有胎心 宝宝多少天有胎心 想办一张信用卡,如何提高通过率呢? 线路故障和线路跳闸的区别? 如何通过小组工作达到提升自信心的目的 如何发挥“小组合作学习”的真正优势 如何提高申请信用卡的通过率 在网上怎样申请信用卡通过率高啊 在小组合作学习中怎样发挥优秀生的作用 如何发挥小组作用,促进全组共同进步 小组合作问题 办理信用卡怎么填通过率高,加分高 求一份职业生涯规划课的小组项目报告,100悬赏 知道车牌号如何查询车架号?没有行驶证 怎么申请信用卡通过率高? 如何看待小组合作学习的利与弊 怎么在网上申请信用卡通过率高 如何在小组合作学习中培养和发挥小组长的作用 请教配电所高压柜断路器发生跳闸事故的处理步骤 110KV线路事故跳闸如何处理