from:http://blog.csdn.net/bfcady/article/details/2622701

思路:建立流对象,将上传图片临时保存到byte数组中,再用SQL语句将其保存到数据库中

说明:以下程序一切从简,实际用应用中应注意使用try等语句

  • 创建表ImageStore,表结构如下图

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

上传图片到数据库,读取数据库中图片并显示(C#)的更多相关文章

  1. 我的Android最佳实践之—— ImageView中图片拉伸显示

    通过设置android:scaleType="fitXY"使得图片拉伸显示.补充:scaleType的属性有matrix(默认).center.centerCrop.centerI ...

  2. Android 读取Assets中图片

    bgimg0 = getImageFromAssetsFile("Cat_Blink/cat_blink0000.png"); * * 从Assets中读取图片 */ privat ...

  3. 后台数据库读取Html值 到前台显示不了样式

    @Html.Raw(FieldValue) 像一些Html代码 传到前台编译不了,直接显示出来 FieldValue 是后台传过来的值 viewBag

  4. uniapp上传图片后台返回url后放入image中图片不显示问题

    原因:后台返回路径问题后台返回地址斜杠为 \ 我们需要的是 /  如下后台返回的地址导致转义了 修改后可以显示

  5. dede 采集文章内容中图片不显示的问题

    找到include文件下面的dedecollection.class.php 找到DownMedias这个方法,大概在870行 //下载标记里的图片和flash $okurl = $this-> ...

  6. 手机站点开发及手机中图片加速显示img的Canvas方法

    随着手机开发越来越流行,手机开发的非常多框架也应运而生,比較好用的手机站点开发框架推荐例如以下: 1.zeptojs.里面封装了非常多手机特有方法,比如touch.js等等. 和jquery使用方法差 ...

  7. 移动端-处理后台传过来的html中图片的显示

    function DealWithImg() { var width = 0; if (window.screen.width) { width = window.screen.width; } el ...

  8. springmvc读取服务器磁盘图片,显示于前台页面

    在项目中的config目录下有一个文件,在后台程序中获取 它并使用. springmvc提供一个方法:File file = new ClassPathResource("NonTaxVou ...

  9. nginx中图片无法显示

    如果没有配置虚拟主机,则修改nginx.conf. 如果已创建单独虚拟主机,则在vhost下找到指定的主机配置文件, 如:www.xxx.com.conf location ~ .*\.(gif|jp ...

随机推荐

  1. 约瑟夫环 java实现

    问题: N个人从1到N编号.围城一圈,从1開始报数, 数到X时,将X的编号输出,并将那个人踢出, 下一个从1再開始报数,直到全部人都出去 思路: 就是计数.移除,没有太深的思想,直接上代码: pack ...

  2. odoo8.0下selection_add的使用

    在odoo中有selection类型的字段,用于限定字段的值在某些范围之内,在view上面显示此字段时,会显示一个下拉的列表. 如果是自己新定义的字段,这个列表的内容可以自己定义,但如果是继承自某个对 ...

  3. 计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件)

    文本文件是可以看到的字符, 二进制文件是不可视字符,如图片. 二进制文件: 包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件.计算机文件基本上分为二种:二进制文件和 ASCII( ...

  4. 仿网易/QQ空间视频列表滚动连播炫酷效果

    代码地址如下:http://www.demodashi.com/demo/11201.html 一.准备工作 AndroidStudio 开发环境 需要下载七牛的开源播放器SDK 本例子实现了仿网易/ ...

  5. spring声明式事务以及配置

    使用spring提供的事务处理机制的好处是程序员可以不用关心事务的切面了,只要配置就好了,可以少写代码. spring声明式事务处理 spring 声明:针对的是程序员,程序员告诉spring容器,哪 ...

  6. 阿里云web播放器

    原文地址:https://help.aliyun.com/document_detail/51991.html?spm=5176.doc61109.6.703.ZTCYoi 一.概念说明 1. pla ...

  7. REMOTE HOST IDENTIFICATION HAS CHANGED问题的解决方式

    好久没更新博客园. 这段没更新博客的时间内收获了很多,所以更新下博客来整理.记录这段时间内学到的内容. 最近腾讯云服务器欠费停机了,所以趁着缴费.趁着心血来潮就……重装了云系统.结果在进行远程ssh连 ...

  8. SQL语句创建相同结构的表

    --Oracle的语句create table sa_salaryRecord as select * from sa_salary where 1=2; --MSSQL的语句select * int ...

  9. Unity3D-rigidBody.velocity

    还有半小时就下班了.写一下今天遇到的问题.处理方法以及一些自己的理解.理解的不一定对,还希望大家指正. 今天我做的效果是,hero的移动. 曾经做过用的是transform.Translate(Vec ...

  10. 浅谈 Objective-C 下对象的初始化

    转自:http://www.oschina.net/question/54100_32468 众所周知,Objective-C是一门面向对象的语言,一般情况下,我们在Objective-C中定义一个类 ...