Asp.net中图片存储数据库以及页面读取显示通用方法详解

前端碰到对在一个系统遇到流程控制中需要存储在数据库存储一个签名图片的问题-一 直控制不好, 今天特别关于这个问题详细看了一下.其实这个问题网上资源还是相当多的, 但问题是过于凌乱 资料残缺不全 甚至我感觉其中有相当的一部分会对读者产生一些误导 .对于Asp.net中存储图片我在08年一月份就做了一个详细解决方案,今天在这个基础主要 对一些细节控制上以及页面显示上做了完善,详细步骤如下:

首先声明一下开发环境:VS2008+SQL2005数据库+.NET FrameWork 3.5版本

(1)存储图片ImageStore表数据库设计:

1 create table StoreImage
2 (
3    id int not null  identity(1,1) primary key,
4    markname varchar(100) not null,-- 图片备注名称
5    markContent image not null,--文件内容
6     markType varchar(100) not null,--保存文件类型 用于生成
7     markSize int not null,--图片长度 读取数据用
8    markLinkUrl  varchar(1000) not null,--数据库路径
9    markDate datetime not  null default( getdate())--上传时间
10 )
11 go

其中在表中设计中添加了上传图片文件类型和文件大小(Byte[]字节大小),主要为了读 取时对图片显示进行控制.请参考后面编码说明.存储图片内容采用Image类型,SQL2005数 据容量为2G,对应C#中类型Byte[](字节数组),其中在设计中我还参考使用SQL中Binary类 型, 但是测试后发现Binary类型容量范围1-8000字节,对于图片容量太小, markLinkUrl为 了测试以图片路径方式存储并读取显示在页面这种方式 请参考后面详细说明.

(2)图片存储到数据库并单一读取:

图片存储:通过文件上传获取图片并转换成Byte[]字节数组,保存到数据库Image字段, 页面设计如下:

代码

1 <!--说面这是全部的页面代码:-->
2  <form id="form1"  runat="server" style="font-size:12px;" enctype="multipart/form- data">
3
4      备 注:<asp:TextBox ID="markname"  runat="server"></asp:TextBox>
5      上  传:<asp:FileUpload ID="FileUpload1" runat="server" />
6       <asp:Button ID="Button1"    runat="server"  OnClientClick="return  checkClint()"   Text="上 传"     onclick="Button1_Click" />
7
8      <script  language="javascript" type="text/javascript">
9        function  checkClint()
10        {
11          var  getmarkname=document.getElementById("markname");
12          var  getfile=document.getElementById("FileUpload1");
13
14           if(getmarkname.value=="")
15          {
16             alert('请输入图片备注名称!');
17             getmarkname.focus();
18            return false;
19           }else if(getfile.value=="")
20          {
21             alert('请选择上传文件路径!');
22             getfile.focus();
23            return false;
24           }else
25          {
26            return  true;
27          }
28        }
29       </script>
30      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
31       <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text=" 读取图片" />
32
33      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
34       <asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text=" 读取到Image控件中" />
35      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
36       <asp:Button ID="Button5" runat="server" onclick="Button5_Click"     Text="存储链接方式获取图片" />
37      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
38       <asp:Button ID="Button4" runat="server"  onclick="Button4_Click" Text="下载图片" />
39      <br  />
40      <br />
41      <asp:Image  ID="Image1" runat="server" />
42      <br />
43       图片路径方式读取:<br />
44      服务器端:<asp:Image  ID="Image2" runat="server" />
45      <br />
46       <asp:Label ID="Label2" runat="server"></asp:Label>
47       <br />
48      客户端Img:<img alt=""   runat="server" id="clintimg" />
49      <br />
50       <asp:Label ID="Label1" runat="server"></asp:Label>
51      </form>

时间: 2024-10-26 06:36:15

Asp.net中图片存储数据库以及页面读取显示通用方法详解的相关文章

【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解

原文:[译]ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开Movie控制器,找到Details方法. // // GET: /Movies/Details/5 public ActionResult Details(Int32 id) { Movie movie = db.Movies.Find(id); if (movie == null) {

ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开Movie控制器,找到Details方法. // // GET: /Movies/Details/5 public ActionResult Details(Int32 id) { Movie movie = db.Movies.Find(id); if (movie == null) { retur

JS中call/apply、arguments、undefined/null方法详解_javascript技巧

a.call和apply方法详解 -------------------------------------------------------------------------------- call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指

ASP.NET中的Inherits、CodeFile、CodeBehind的区别详解_实用技巧

Inherits.CodeFile.CodeBehind 在 ASP.NET 中使用代码隐藏方法来设计Web 窗体,可使页代码能够更清晰地从 HTML 内容中分离到完全单独的文件中. 通常一个 @page 指令如下: 复制代码 代码如下: < %@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplic

thinkPHP中配置的读取与C方法详解_php实例

本文实例讲述了thinkPHP中配置的读取与C方法.分享给大家供大家参考,具体如下: 1.项目公共配置 Conf/config.php 内容如下 <?php /** *项目公共配置 *@package *@author **/ return array( 'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay', 'APP_AUTOLOAD_PATH' =>

thinkPHP中配置的读取与C方法详解

本文实例讲述了thinkPHP中配置的读取与C方法.分享给大家供大家参考,具体如下: 1.项目公共配置 Conf/config.php 内容如下 <?php /** *项目公共配置 *@package *@author **/ return array( 'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay', 'APP_AUTOLOAD_PATH' =>

微信小程序 跳转页面的两种方法详解

微信小程序 跳转页面 小程序页面有2种跳转,可以在wxml页面或者js中: 1,在wxml页面中: <navigator url="../index/index">跳转到新页面</navigator> <navigator url="../index/index" open-type="redirect">在当前页打开</navigator> <navigator url="../i

iOS应用中使用Toolbar工具栏方式切换视图的方法详解_IOS

关于UIToolbarToolBar工具栏是视图View的属性,可以在工具栏上添加工具栏按钮Bar Button Item(可以是自定义的Custom.也可以是系统自带的BarButtonSystemItem ),视图控制器可以通过工具栏项对视图中内容进行操作. 注意事项: 在导航栏控制器中会有一个UIToolBar实例,但默认是隐藏的,如果需要显示,需要通过这个方法将其打开: 在这里需要注意的是,与UINavigationBar类似,导航控制器拥有且只拥有一个UIToolBar实例,但UITo

Javascript中判断一个值是否为undefined的方法详解_javascript技巧

前言 相信大家都知道当声明一个变量,并且没有给赋值的情况下,它的初始值是undefined.但是在javascript中,怎么检查一个值是否为undefined呢? 简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined if (name === undefined) {...} 一些人反对直接使用undefined变量进行比较,因为在旧的浏览器中允许它的值被重新赋值,比如下面这样: undefined = "test" 在被重新赋值后,使用undefined指令将不能