[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField)
根据前面三篇文章的教学
完成后可以做出来 (请您务必依照顺序学习,不要只是找范例来Copy)
- [.ashx檔?泛型处理程序?]基础入门#1....能否用中文教会我?别说火星文?
- [.ashx檔?泛型处理程序?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
- [.ashx檔?泛型处理程序?]基础入门#3....ADO.NET 与 将DB里面的二进制图片还原
本文做为书本「上集」的 Ch.18 FileUpload 补充范例
ASP.NET 4.5专题实务(I),松岗出版
方法一!
我个人是建议「档案上传时,存在 Web Server硬盘,把存盘的路径与文件名,放入DB」,这种作法最简单!
不用学习新招数就能完成
我的书本(上集) FileUpload也是介绍这种作法,书本内已经有完整范例。
方法二!本文将介绍的.....
如果您坚持要把「档案」存到数据表里面,会遇见两个关卡
2-1. 如何把图片(档案)的二进制IO Stream存入数据表的字段(请设定为 Image数据型态)
2-2. 如何把数据表里面的「二进制」数据,捞出来(读取出来),还原成图片?秀在网页上?
教学影片: http://youtu.be/JfZ3rYchlLo
依照上述第三篇文章里面,我提供的超链接。里面就有很多前辈分享他们的程序代码
看看哪个OK,您就照做,一定可以做得出来。
相关文章如下,任选一篇都能完成:
微软MSDN范例就有,请看 http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.fileupload.postedfile(v=vs.110).aspx
http://www.cnblogs.com/travelcai/archive/2007/09/27/907203.html
http://davidma168.wordpress.com/2011/01/25/ashx-%E8%BC%B8%E5%87%BA%E5%9C%96%E7%89%87/
http://davidma168.wordpress.com/2011/01/25/ashx-output-image-2/
- http://4068205.blog.51cto.com/4058205/1090928 推荐!
- http://www.dotblogs.com.tw/ligthwaver/archive/2011/09/21/37066.aspx 简单!
- http://welkingunther.pixnet.net/blog/post/25986417-(asp.net)%E7%94%A8http-handler%E6%8A%8A%E8%B3%87%E6%96%99%E5%BA%AB%E7%9A%84%E4%BA%8C%E9%80%B2%E4%BD%8D%E5%9C%96%E7%89%87%E6%AA%94%E9%A1%AF
- http://www.soaspx.com/dotnet/asp.net/tech/tech_20100204_2767.html
===============================================================================================
第一,建立一个数据表
存放「图片、档案」的字段,请设定为 Image数据型态
另一个字段,要设定 MIME格式,通常是把附档名(扩展名)放进去。日后要把这些二进制数据独出来,组合成原本的图片,会用到MIME!
数据表的范例可由此下载 (.sql檔,檔名有 Image字样)
https://onedrive.live.com/?cid=6F7F668080F24B20&id=6F7F668080F24B20%21115
第二,上传的范例,可以看见 FileUpload的程序有些变化
2-1. 不需要存档了
FileUpload的 .SaveAs()方法用不到。因为档案上传后就写入数据表,不是存在 Web Server硬盘
也不用设定存盘的目录、路径
2-2. 上传后,档案(图片)的 IO Stream以「 Byte数组」的方式的方式来读取
便可以把这个 Byte数组的内容(图片的二进制数据),存入数据表中
第三,把DB里面的图片(二进制)还原,秀在网页上
这里我用了两种作法,不过原理都相同
简言之,把读取、还原成图片的动作,放在 .ashx程序里面
3-1. 一般的 Image控件
<asp:Image ID="Image1" runat="server"
ImageUrl='<%# "FileUpload_DB_Image_02_Display.ashx?id=" + Eval("FileUpload_DB_id")%>' />
3-2. 大型控件里面的 ImageField 样板字段
<asp:GridView ,,,,,>
<asp:ImageField DataImageUrlField="FileUpload_DB_id(数据表的域名!)"
DataImageUrlFormatString="FileUpload_DB_Image_02_Display.ashx?id={0}">
</asp:ImageField>
</asp:Gridview>
第四,把图片的读取(从数据库捞出来)。还原成原本的图片MIME格式,都是用 ashx程序来做
本系列的范例,不就是介绍 ASHX吗?
回头看看第一步骤,我们的 FileUpload_DB2 数据表里面,多设计两个「字段」,
一个存放「图片(二进制)」,另外一个存放「扩展名」作为MIME
............原理是不是很清楚了?
===============================================================================================
档案下载:
因为这些范例,也是网络上学习到的
前辈们愿意分享,我做好后也愿意分享 ( 记得要搭配第一个步骤,先把您的 FileUpload_DB2数据表设定完成 )
知识 因为分享而伟大
把 "大容量"的图片、档案放到数据表的「字段」里面,会有一些缺陷
上课的时候将为您报告这几点。
您也可以参阅 SQL 2012的 FileStream,试着了解为何有这些改进?
改善了哪些地方?......以下是 msdn网站的说明
FILESTREAM 可让 SQL Server 架构应用程序在文件系统上储存非结构化的数据,例如文件和影像。 应用程序可以利用文件系统的丰富数据流 API 和效能,并同时维护非结构化数据与对应结构化数据之间的交易一致性。
FILESTREAM 会将 SQL Server Database Engine 与 NTFS 文件系统整合,方法是将 varbinary(max) 二进制大型对象 (BLOB) 数据当做档案储存在文件系统上。 Transact-SQL 语句可以插入、更新、查询、搜寻和备份 FILESTREAM 数据。 Win32 文件系统接口提供了数据的数据流方式存取。
FILESTREAM 会使用 NT 系统快取来储存档案数据。 如此可减少 FILESTREAM 数据可能对 Database Engine 效能产生的任何影响。 并不会使用 SQL Server 缓冲池;因此,此内存可用于查询处理。
当您安装或升级 SQL Server 时,并不会自动启用 FILESTREAM。 您必须使用 SQL Server 组态管理员和 SQL Server Management Studio 来启用 FILESTREAM。 若要使用 FILESTREAM,您必须建立或修改数据库,以便包含特殊类型的档案群组。 然后,请建立或修改数据表,让它包含具有 FILESTREAM 属性的 varbinary(max) 数据行。 完成这些工作之后,您就可以使用 Transact-SQL 和 Win32 来管理 FILESTREAM 资料。
想要作到上传图片以后,还要「缩图」
FileUpload以后,缩图(大图变小图)
搜寻关键词「ASP.NET 缩图」就能找到很多范例,可以参阅这几篇文章,很清楚:
http://wangshifuola.blogspot.tw/2011/10/aspnetimage-resize.html
http://blog.xuite.net/cppbuilder/blog/9331487
[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField)的更多相关文章
- [.ashx檔?泛型处理例程?]基础入门#3....ADO.NET 与 将DB里面的二进制图片还原
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_03_db_picture_show.aspx ...
- [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_02_fileupload_picture_p ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- Expression Blend实例中文教程(3) - 布局控件快速入门Grid
上一篇对Blend 3开发界面进行了快速入门介绍,本篇将基于Blend 3介绍Silverlight控件.对于微软开发工具熟悉的朋友,相信您很快就熟悉Blend的开发界面和控件. XAML概述 Sil ...
- iOS学习笔记——基础控件(上)
本篇简单罗列一下一些常用的UI控件以及它们特有的属性,事件等等.由于是笔记,相比起来不会太详细 UIView 所有UI控件都继承于这个UIView,它所拥有的属性必是所有控件都拥有,这些属性都是控件最 ...
- [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)
A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不 ...
- 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree
原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...
- VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
上一节中鸡啄米讲了为Ribbon Bar添加控件的方法.本节教程鸡啄米将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数. 一.为Ribbon Bar添加更多Ribbo ...
- 浅谈Winform控件开发(一):使用GDI+美化基础窗口
写在前面: 本系列随笔将作为我对于winform控件开发的心得总结,方便对一些读者在GDI+.winform等技术方面进行一个入门级的讲解,抛砖引玉. 别问为什么不用WPF,为什么不用QT.问就是懒, ...
随机推荐
- BPMN
1.私有业务流程: 特定行业规则制度比如惠普生产线流程-针对业务人员 2.公有业务流程: 技术实现-针对流程开发人员 http://www.blogjava.net/RongHao/archive/2 ...
- iis实现类似tomcat ip:port直接访问站点
先配置host: 建站点: iis配置文件地址:C:\Windows\System32\inetsrv\config\applicationHost.config(于tomcat中的web.xml类似 ...
- The Ninth Hunan Collegiate Programming Contest (2013) Problem C
Problem C Character Recognition? Write a program that recognizes characters. Don't worry, because yo ...
- linux tar 命令 --致力于“一眼看懂,随手就用”的随笔
基本玩法: 压缩: tar -czf txt.tar.gz *.txt // 将当前目录下的所有txt文件,创建一个tar包,并用gzip算法,压缩成txt.tar.gz 文件 解压: tar -xz ...
- Android设置透明、半透明等效果
设置透明效果 大概有三种 1.用android系统的透明效果Java代码 android:background="@android:color/transparent" 例如 设 ...
- dedecms首页怎么调用公司简介的内容
DeDeCMS功能虽然强大,但还是有些细节上的功能没有实现,正如本文描述的问题一样,DEDECMS要在网站首页调用公司简介的内容,而且还要截取前多少个字符数的时候,DEDECMS标签中没有能实现这样的 ...
- JS入门-慕课网
javascript是一种弱类型的数据交互语言, ch 1 数据类型 js中有六种数据类型:nunmber.string.boolean.null.undenfined.object原始类型:numb ...
- C语言中的fread和fwrite
C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...
- 用Scrapy爬虫下载图片(豆瓣电影图片)
用Scrapy爬虫的安装和入门教程,这里有,这篇链接的博客也是我这篇博客的基础. 其实我完全可以直接在上面那篇博客中的代码中直接加入我要下载图片的部分代码的,但是由于上述博客中的代码已运行,已爬到快九 ...
- 【HTML/XML 8】XSL,可扩展样式表语言
导读:上篇博客说了在XML文档中实现表现形式的一种形式:CSS层叠样式表,本篇博客将接着说明其另一种实现方式XSL,并将分析XSL和CSS之间的 关系. 一.XSL简介 XSL(eXtensible ...