注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章。

我们都知道,在Gridview中不能直接去绑定数据库中的图片,我们可以利用HttpHandler很容易的完成这个任务,在这里我记录一下这个过程。

1.上传图片存储到数据库中

在数据库中创建一个表,添加一下3个字段:

步骤一:在Web页面中拖一个FileUpload 控件,一个文本框用于输入名称和提交上传按钮

<asp:FileUpload ID="fuImage" runat="server" /><br />
<asp:TextBox ID="txtImageName" runat="server"/><br />
<asp:Button ID="btnUpload" runat="server"
OnClick="btnUpload_Click" Text="Upload" />

步骤二:在Web.Config文件内配置连接字符串。

<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\Image.mdf;Integrated Security=True;
User Instance=True" providerName="System.Data.SqlClient"/>

步骤三:把下面的代码复制到上传按钮事件中。

protected void btnUpload_Click(object sender, EventArgs e)
{Stream imgStream = fuImage.PostedFile.InputStream;int imgLen = fuImage.PostedFile.ContentLength;string imgName = txtImageName.Text;byte[] imgBinaryData = new byte[imgLen];int n = imgStream.Read(imgBinaryData,0,imgLen);//use the web.config to store the connection stringSqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);SqlCommand command = new SqlCommand("INSERT INTO Image (imagename,image)VALUES ( @img_name, @img_data)", connection);SqlParameter param0 = new SqlParameter("@img_name",SqlDbType.VarChar, 50);param0.Value = imgName;command.Parameters.Add(param0);SqlParameter param1 = new SqlParameter("@img_data", SqlDbType.Image);param1.Value = imgBinaryData;command.Parameters.Add(param1);connection.Open();int numRowsAffected = command.ExecuteNonQuery();connection.Close();
}

2.利用HttpHandler从数据库中读取图片

创建一个名为ImageHandler.ashx的HttpHandler从数据库中读取图片,通过imageID这个参数调用其方法显示图片。像这样:ImageHandler.ashx?ImID=200

步骤四:书写ImageHandler.ashx文件代码如下:

public class ImageHandler : IHttpHandler
{public void ProcessRequest(HttpContext context){string imageid = context.Request.QueryString["ImID"];SqlConnection connection =new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);connection.Open();SqlCommand command = new SqlCommand("select Image from Image where ImageID=" + imageid,connection);SqlDataReader dr = command.ExecuteReader();dr.Read();context.Response.BinaryWrite((Byte[])dr[0]);connection.Close();context.Response.End();}public bool IsReusable{get{return false;}}
}

3.绑定Gridview控件

步骤五:拖一个Gridview控件到页面上,并将其命名为gvImages。用下面代码来绑定数据。

SqlConnection connection = new SqlConnection(ConfigurationManager.
ConnectionStrings["connectionString"].ConnectionString);
SqlCommand command = new SqlCommand("SELECT imagename,ImageID
from [Image]", connection);
SqlDataAdapter ada = new SqlDataAdapter(command);
DataTable dt = new DataTable();
ada.Fill(dt);
gvImages.DataSource = dt;
gvImages.DataBind();

步骤六:设置Gridview控件的绑定列,其HTML代码如下:

<asp:GridView Width="500px" ID="gvImages" runat="server" AutoGenerateColumns="False" ><Columns><asp:BoundField HeaderText = "Image Name" DataField="imagename" /><asp:TemplateField HeaderText="Image"> <ItemTemplate> <asp:Image ID="Image1" runat="server" ImageUrl='<%# "ImageHandler.ashx?ImID="+ Eval("ImageID")%>'/> </ItemTemplate></asp:TemplateField></Columns>
</asp:GridView>

4.上传图片,并显示

OK!测试通过!还有其它一些显示图片的方法。但是我认为这个比较简单

使用Gridview绑定数据库中的图片相关推荐

  1. dw读取access中的图片_怎样从Access数据库中读取图片?解决办法

    当前位置:我的异常网» C# » 怎样从Access数据库中读取图片?解决办法 怎样从Access数据库中读取图片?解决办法 www.myexceptions.net  网友分享于:2013-03-0 ...

  2. 用image控件不能正常显示Sql server2000数据库中的图片

    用image控件不能正常显示Sql server2000数据库中的图片 Delphi / Windows SDK/API http://www.delphi2007.net/DelphiMultime ...

  3. asp.net mvc 从数据库中读取图片的实现代码

    首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult : ActionResult { publi ...

  4. 图片保存到数据库以及从数据库中Load图片

    图片保存到数据库以及从数据库中Load图片 假设有一个数据库Test,下面创建一个表,它有一个字段是image类型,我们把图片转换成Byte数组存放在数据库中: CREATE TABLE Images ...

  5. 将mysql数据库中的图片读出来的_MySQL存入图片+Qt读入读出数据库中的图片

    还记得之前的一个项目里要向数据库中存入图片,然后Qt要在数据库中读入读出图片,当时纠结了好久,查阅了很多资料才解决,所以希望本文能给需要朋友点帮助.好了废话不多说,下面开始讲实现步骤. 1.MySQL ...

  6. android 读取mysql中的图片_Android 通过API获取数据库中的图片文件方式

    Overview 今天复习了一下Android 如何将我们数据库中图片获取出来,并且将其转换为bitmap进行显示. 开发环境以及技术 使用Visual Studio 2019 Android Stu ...

  7. 数据库中存储图片等文件的小探讨

    关于在数据库中存储图片文件的问题 直接存储在数据库中 这样做有什么问题 另寻方法 或许接下来的文章没有明显的帮到你解决存储问题,但花点时间耐心的往下读一读,在思路上或许对你可以有点帮助! 直接存储在数 ...

  8. 浏览器访问数据库中的图片路径

    今天遇到一个小问题,就是启动服务器后,怎么提取数据库中图片路径,在浏览器地址栏中直接能够显示图片.我们知道,我们无法直接访问数据库中的图片,只能在项目启动后,通过服务器来显示图片地址. 直接上例子: ...

  9. php 输出图片 变叉,想把数据库中的图片取出并自动显示!但得到的却是红叉叉!哪位大哥给看看 谢谢!...

    想把数据库中的图片取出并自动显示!但得到的却是红叉叉!哪位大哥给看看 谢谢! 本脚本目的是把数据库中的图片取出并自动显示出来,可是我每次得到的却是很多红叉叉,有哪位大大好人帮我看看.这问题困人好久了, ...

最新文章

  1. html的body内标签之input系列1
  2. 非准确率至上,这些趋势在2020年的AI领域更受关注
  3. 数据同步关于去除乱码插入mysql数据库
  4. TIOBE公布11月榜单:Python势不可挡,超越Java !
  5. 63. Unique Paths II
  6. Git存管代码,实例演示
  7. 数据结构与算法 -- 队列 ADT
  8. Struts 2配置详解
  9. 搭建maven的私服nexus
  10. 【转载】究竟什么是POJO?
  11. (2)机器学习_train_test_split
  12. HTML5-Geolocation(地理定位功能)
  13. OpenCV(VS2019)——无法打开“opencv2/opencv.hpp”文件
  14. java实现微信公众号token验证
  15. web前端常见面试题
  16. 浏览器页面渲染机制-前端原理剖析
  17. C语言:添加和显示,数据保存在文件中,下次打开可以获取之前录入的内容
  18. 小程序传布尔_拥抱和传布禅宗编码
  19. 2022.12 青少年机器人技术等级考试理论综合试卷(一级)
  20. QBASIC在win8-64位系统中的编译及运行

热门文章

  1. QT的QLineSeries类的使用
  2. QT的QDesignerTaskMenuExtension类的使用
  3. QT的Q3DScatter类的使用
  4. python打包脚本_py2exe打包python脚本
  5. guibuilder 皮肤_和平精英返场皮肤投票排名介绍-返场皮肤哪个好
  6. SDK,NDK,ADT工具下载常用地址
  7. python三维数组怎么表示_python – numpy中的三维数组
  8. checkbox选中和不选中 jqu_jquery checkbox 选中不选中
  9. Qt5.12编译MySQl5.1.37驱动
  10. yolov3/tiny-yolov3训练和测试 python2/3