上传图片到数据库,读取数据库中图片并显示(C#)
from:http://blog.csdn.net/bfcady/article/details/2622701
思路:建立流对象,将上传图片临时保存到byte数组中,再用SQL语句将其保存到数据库中
说明:以下程序一切从简,实际用应用中应注意使用try等语句
- 创建表ImageStore,表结构如下图

- 主页面HTML如下
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title>图片上传</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:FileUpload ID="fuImage" runat="server" />
- </div>
- <div>
- <asp:Button ID="btnUpload" runat="server" Text="上传图片" OnClick="btnUpload_Click" />
- </div>
- <div>
- 输入图片的ID:<asp:TextBox ID="txtImageID" runat="server"></asp:TextBox>
- </div>
- <div>
- <asp:Button ID="btnSubmit" runat="server" Text="显示图片"
- onclick="btnSubmit_Click" />
- </div>
- <div>
- <asp:Image ID="Image1" runat="server" />
- </div>
- </form>
- </body>
- </html>
- 主页面后台代码
- using System;
- using System.Configuration;
- using System.Data;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.IO;
- using System.Data.SqlClient;
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- protected void btnUpload_Click(object sender, EventArgs e)
- {
- int imageLength = fuImage.PostedFile.ContentLength;//取得图片大小,以字节为单位
- byte[] imageByteArray = new byte[imageLength]; //图片将临时存储在Byte(二进制)数组
- Stream imageStream = fuImage.PostedFile.InputStream;//建立流对象
- imageStream.Read(imageByteArray, 0, imageLength);//将图片读取到imageByteArray数组中,其中0为起始位置,imageLength为要读取的长度
- //以下为数据库连接
- SqlConnection sqlconn = new SqlConnection("server=(local);database=a0522183734;uid=a0522183734;pwd=bfcady");
- string sql = "insert imageStore(ImageData,ImageContentType,ImageDescription,ImageSize) values(@Image,@ContentType,@ImageDescription, @ImageSize)";
- SqlCommand sqlcom = new SqlCommand(sql, sqlconn);
- sqlcom.Parameters.AddWithValue("@Image", imageByteArray);
- sqlcom.Parameters.AddWithValue("@ContentType", Path.GetExtension(fuImage.PostedFile.FileName));//取得文件扩展名
- //取得文件名,不包含扩展名,实际应用中作为图片描述用
- sqlcom.Parameters.AddWithValue("@ImageDescription", Path.GetFileNameWithoutExtension(fuImage.PostedFile.FileName));
- sqlcom.Parameters.AddWithValue("@ImageSize", imageLength);
- sqlconn.Open();
- sqlcom.ExecuteNonQuery();
- sqlconn.Close();
- }
- protected void btnSubmit_Click(object sender, EventArgs e)
- {
- //改变图片的URL
- Image1.ImageUrl = "ReadImage.ashx?imgID=" + txtImageID.Text;
- }
- }
- 创建一般处理程序ReadImage.ashx,读取图片
- <%@ WebHandler Language="C#" Class="ReadImage" %>
- using System;
- using System.Web;
- using System.Data.SqlClient;
- public class ReadImage : IHttpHandler {
- public void ProcessRequest (HttpContext context) {
- string imgID = context.Request.QueryString["imgID"].ToString();
- SqlConnection sqlconn = new SqlConnection("server=(local);database=a0522183734;uid=a0522183734;pwd=bfcady");
- string sql = "select * from ImageStore where ImageID=" + imgID;
- SqlCommand sqlcom = new SqlCommand(sql, sqlconn);
- sqlconn.Open();
- SqlDataReader sqldr = sqlcom.ExecuteReader();
- if (sqldr.Read())//移到第一条记录,如果第一条记录不为空
- {
- context.Response.ContentType = (string)sqldr["ImageContentType"];//设置输出类型
- context.Response.OutputStream.Write((byte[])sqldr["ImageData"], 0, (int)sqldr["ImageSize"]);
- context.Response.End();
- }
- sqlconn.Close();
- }
- public bool IsReusable {
- get {
- return false;
- }
- }
- }
- 运行结果如下

上传图片到数据库,读取数据库中图片并显示(C#)的更多相关文章
- 我的Android最佳实践之—— ImageView中图片拉伸显示
通过设置android:scaleType="fitXY"使得图片拉伸显示.补充:scaleType的属性有matrix(默认).center.centerCrop.centerI ...
- Android 读取Assets中图片
bgimg0 = getImageFromAssetsFile("Cat_Blink/cat_blink0000.png"); * * 从Assets中读取图片 */ privat ...
- 后台数据库读取Html值 到前台显示不了样式
@Html.Raw(FieldValue) 像一些Html代码 传到前台编译不了,直接显示出来 FieldValue 是后台传过来的值 viewBag
- uniapp上传图片后台返回url后放入image中图片不显示问题
原因:后台返回路径问题后台返回地址斜杠为 \ 我们需要的是 / 如下后台返回的地址导致转义了 修改后可以显示
- dede 采集文章内容中图片不显示的问题
找到include文件下面的dedecollection.class.php 找到DownMedias这个方法,大概在870行 //下载标记里的图片和flash $okurl = $this-> ...
- 手机站点开发及手机中图片加速显示img的Canvas方法
随着手机开发越来越流行,手机开发的非常多框架也应运而生,比較好用的手机站点开发框架推荐例如以下: 1.zeptojs.里面封装了非常多手机特有方法,比如touch.js等等. 和jquery使用方法差 ...
- 移动端-处理后台传过来的html中图片的显示
function DealWithImg() { var width = 0; if (window.screen.width) { width = window.screen.width; } el ...
- springmvc读取服务器磁盘图片,显示于前台页面
在项目中的config目录下有一个文件,在后台程序中获取 它并使用. springmvc提供一个方法:File file = new ClassPathResource("NonTaxVou ...
- nginx中图片无法显示
如果没有配置虚拟主机,则修改nginx.conf. 如果已创建单独虚拟主机,则在vhost下找到指定的主机配置文件, 如:www.xxx.com.conf location ~ .*\.(gif|jp ...
随机推荐
- tmux入门 : 3. 会话
上一节我们已经将 tmux 安装好了,现在就可以通过以下命令来启动它: $ tmux 启动之后,可以看到命令行最底部多了一条绿色的状态条,上面显示了一些信息,比如计算机名和时间等. 要退出 tmu ...
- (二)Solr——Solr界面介绍
1. Dashboard 仪表盘,显示了该Solr实例开始启动运行的时间.版本.系统资源.jvm等信息. 2. Logging Solr运行日志信息 3. Cloud Cloud即SolrCloud, ...
- Mac系统使用命令行快捷打开Sublime
本篇文章由:http://xinpure.com/use-command-line-shortcuts-to-open-the-mac-system-sublime/ 方法一 使用软链接 ln -s ...
- 【转载】C#根据当前时间获取周,月,季度,年度等时间段的起止时间
DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek. ...
- xpath的基础实例
本文分为路径表达式和常用函数两部分,整理自火车浏览器官方教程-火车浏览器之Xpath讲解. 小提示:可以使用火狐浏览器.我用的是火狐浏览器+firebug+firepath来进行调试,调试界面是这样的 ...
- mongodb - 查看集合的状态
#查看集合postalCodes的状态信息 > db.postalCodes.stats(1024) #1024表示显示的单位是KB.默认是bytes { "ns" : &q ...
- hdu2647(拓扑排序)
链接:点击打开链接 题意:每一个人的基本工资为888,给出两个人的关系a,b,代表a的工资比b高问满足全部条件的话,最少须要支付多少钱 代码: #include <map> #includ ...
- 冻结 锁定 固定 行 列 表头 抬头 html table jquery 全兼容常见浏览器
转:http://www.cnblogs.com/sorex/archive/2011/06/30/2093499.html <!DOCTYPE html PUBLIC "-//W3C ...
- 面试、笔试中常用的SQL语句(数据库知识必杀)一共50个!!!
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 ...
- SQL Server 保存不了修改后的表的解决方法
客户端报错(配图): 出现问题环境:在新建一个表之后,又想添加一个字段保存表,提示错误. 解决方案:在SQL Server 2008R2 中 对于对于重新保存新建表系统默认设置为“阻止”,在对应设置解 ...