您好,欢迎来到榕意旅游网。
搜索
您的当前位置:首页关于ASP与SQL Server 2000间图像文件存取的研究和实现

关于ASP与SQL Server 2000间图像文件存取的研究和实现

来源:榕意旅游网
维普资讯 http://www.cqvip.com

2006年第4期 湖州职业技术学院学报 2006年l2月 NO.4.2006 Jou r nal of Huzhou Vocational and Technological CoilBg0 Dec 2006 关于ASP与S QL S erver 2 OO O间 图像文件存取的研究和实现 潘建新 (湖州师范学院网络教学中心,浙江湖州 313000) 摘要:利用VB的ADO Stream对象访问和修改SOL ServerBLOB数据的技术,建立ActiveX服务器组件,实现了在ASP中 对任意给定的gif/jpg图像文件上传至服务器并保存在SQL Server Image列中 用ASP中GetChunk方法读取SQL Server Image 列中的图像数据,实现了在浏览器端图像与文字的混合显示。 美t词:ASP}SQL Server 8000}图像}image数据类型 中圈分类号:TP39 文献标识码:A 文章缩号:1672‘・2388(2006)04—0080—05 Research About Access of Image Files Between ASP and SQL Server 2000 PAN Jian—xin (Center。fNetwork Teaeba'ag.Huzhou Teaeher8 CoHege.Huzhou 313000。China) Abs竹耐f This paper introduces the technology of access and modifying SQL Server BLOB data by using ADO Stream of VB to establish Ac— tiveX Server Component,achieve any image file of/PG/GIF,upload to Server and then save to the row of image in SQL Server ZOO0 in order tO read image data from the lOW of image in SQL Server using Get Chunk method and Append Chunk method which are provided by ADO ob。 ject in ASP,and achieve image and text display in the browser document server. ‘ Key words,ASP SOL Server 2000}image;image data type 0 引 言 ASP(Active Server Pages)n J( ”是Microsoft很早就推出的一种Web应用程序解决方案。通过ASP,我 们可以创建功能强大的动态的Web应用程序。但在开发Web应用程序的过程中,我们发现,为了使顾客 能够全面、系统、客观地了解商品的外观,即在提供商品文字介绍的同时,需要在文字介绍旁附加该商品的 图片说明。而在网上征集产品外型设计时,又需要将图像文件进行上传并保存。[Z](PIa@-I6B)[3]cm 上传图片到服务器有多种方法,既可以以文件形式存放于指定的计算机目录下,在数据库表中只反映 图像数据文件的存储路径,也可以放在sQL Server Image列中。前一种存放方法给数据的维护增加了难 度,也给数据的安全带来一定的隐患;后一种方法能真正做到数据的安全管理。 我们可以使用文件上传组件直接将图像数据存储在数据库中。常用的上传组件有;AspSmartUp- load,AspUpload,SA—FileUpSoftware。但这些组件的问题在于,它们是第三方产品,而非标准AsP的一 部分。作为第三方组件,它的致命弱点是不提供源代码,不能根据需要进行定制。 因此,在动态的Web中,研究开发自制的ActiveX服务器组件,来实现将图像数据存储在数据库中, 具有重要的现实意义和广泛的应用价值。 *收稿日期:ZOO6—07一O9 作者简介:播建新(196I一),男,浙江湖州人.湖州师范学院网络教学中心主任,高级实验师,主要从事网络与数据库及其应用研究。 维普资讯 http://www.cqvip.com

第4期 潘建新:关于ASP与SQL Server 2000间图像文件存取的研究和实现 sl 1 SQL Server 2000存储图像数据的策田各』钉 在SOL Server 2000中,对于小于8 000个字节的图像数据可以用二进制型(binary,varbinary)来表示。但通 常的图片大多会大于8 000个字节。所以,SOL Server提供了一种机制——BLOB(nary Larg Objects,大型二进制 对象) BLOB是非常巨大的不定的二进制或者字符型数据,通常是文档(.txt,.d倪)和图片(.眈,.gif..bmp),它可 以存储在数据库中。在SQL Servex中,BLOB可以是text,ntext或者image数据类型。Iage数据类型存储 m的是长度不确定的二进制数据,最长的长度是2GB。 BLOB数据在SQL Server系统中的存储方式不同于普通的数据类型。对于普通类型的数据系统它 直接在用户定义的字段上存储数据值,而对于BLOB类型数据,系统则开辟新的存储页面来存放这些数 据。表中BLOB类型数据字段存放的仅是一个16个字节的指针。该指针指向存放该条记录的BLoB数 据的页面。 2 系统实现 研究ASP和SQL Server 2000间图像文件的存取,简单地说,就是如何把图片上传到服务器,如何让 上传的图片在客户端显示出来 2.1 数据库表的设计嘲 ” 在SQL Server 2000中建立PIC数据库,并创建pic_table表(参见袁1)。 Create table pic_table(id int identity(1,1)not null,photo image) 寰1 pie_table寰结构 2.2 ADO访问数据库 set oconn ̄server.createobject(“adodb.connection”) oConn.Open “DRIVER=(sql server);server=sernameIdatabase=pic;uid=sa;pwd=” set ors:oconn.execute(”select photo from pie_table where id--”&i) 2.3 应用实例 首先给用户提供一个上传界面,用于选择上传的文本图片和文本 我们设想客户端的操作界面如图 1所示,即客户可以浏览选定某个图像文件,按”发送并存贮图形文件”按钮后,便上传选定的图像文件,并 进行保存I单击“显示图形”链接,便可将上传的图形文件在客户端按图文混合的方式显示出来。 圈l 害户螭界面 主界面程序代码(pic.htm): <html> 维普资讯 http://www.cqvip.com

湖州职业技术学院学报 2006年 (head) (/head> (body> (center> (form method=”post”action ̄”search.asp”> (br> (br> (p>请输入图形文件:<input type一”file”name一”t1”size一”4O”> (br> (br> <input type一”submit”value:”发送并存贮图形文件” name一”bl”> (input type一”reset” value一”取消” name一“b2”>(/p> (a href ̄--”showimg.asp”>显示图形(/href> (/form> (/center> (/body> (/html> 当文件在Internet Explorer下显示时,用户可点击”浏览”键,从文件对话框中选择一个图像文件。提 交该表单时,用户所选文件被同时提交。 实际的文件上载键用下面的标签创建: <input type—input type一”file”name一’’tl”size ̄”40”>。 因为type的特征值是file,所以浏览器会创建一个文件上载键。 2.3.1 上传图像文件 “。。’ 用如下纯ASP代码可获取送入http站点的有关信息: ( FormSize ̄--Request.TotalBytes 得到上传数据的大小,用字节来表示 FormData- ̄Request.BinaryRead(FormSize 以二进制方法获取上传来的文件数据 bnCRLF—chrB(13)&chrB(10) 定义一个单字节的回车换行符 Divider=LEFTB(FormData,INSTRB(FormData,bnCRLF)一1) DataStart ̄--INSTRB(FormData,bnCRLF 8L bnCRLF)+4-取 得图片数据的起始字节位置,加4是 因为去掉2个回车换行键所占的字节数 DataEnd ̄-INSTRB(DataStart+1,FormData,divider)一DataStart 取得图片数据的结束字节位置 Response.ContentType ̄-”image/*” ImageData MIDB(FormData,DataStart,DataEnd)馒取出中间属于真正图片数据的部分 %> 从上面的脚本中我们可以看出,要从提交的表单中摘出图像数据必须作复杂的计算。因此,我们提供 另一种上传图像文件的方法,即在VB中建立上传图像的ActiveX服务器组件,并在ASP中引用。 2.3.1.1 制作上传图像的ActiveX服务器组件 建立ActiveX服务器组件,工程名为“myimg”,类名为“img”。具体代码如下: Dim cn As ADODB.Connection声明部分 Dim rs As ADODB.Recordset Dim mxtream As ADODB.Stream声明了一个ADODB Stream对象 Public Sub inimg(te) 过程部分 Set cn;New ADODB.Connection cn.Open”DRIVER=<sql server),8erver—sername;databa8ez;pic;uid=sa}pwd ̄--"” Set rs—New ADODB.Recordset rs.Open’’select*from pie_table where id=1”,cn,adOpenKeyset, adLockOptimistic 维普资讯 http://www.cqvip.com

第4期 潘建新:关于ASP与SQL Server 2000问图像文件存取的研究和实现 Set mstream=New ADODB.Stream rnstre.an-L Type ̄adTypeBinary 属性设置为adTypeBinary,以表示将使用该对象处理二进制数据 mstream.Open mstream.LoadFromFile te rs.Fields(”photo“).Value=mstream.Read'gif 文件的内容以数据流的方式传输到ADO Stream 对象中,并将Stream中的数据保存到记录集内记录的photo列中 rs.Update rs.Close cn.Close End Sub Sub main() 主模块部份 End Sub  .保存工程,并生成myimg.dll文件。 在”myimg.dll”的路径下执行”regsvr32 myimg.dll”,以登记注册ActiveX服务器组件。 2.3.1.2 在ASP中引用myimg.dll组件建立上传图像文件程序 上传图像文件程序的代码(aearch.asp)如下: < @Language- ̄VBScript > < dim te te=request.form(”tl”) > (html> <head> <meta http—equiv ̄“content—type”content=”text/htmlIcharset=gb2312”> (/head> (body> ‘ < set obimy- ̄server.createobject(”myimg.img”) obimy.inimg(te) response.write”发送成功!” > <p><a href=”javascript:history.back();”>回到上一页</a></p> </body> </html> 单击”发送并存贮图形文件”按钮,即可将选中的图形文件的内容通过AetiveX服务器组件(myimg. an),以数据流的方式传输到ADo Stream对象中,并将Stream对象中的数据保存到记录集内的photo列 中 其中变量te是传递图像文件所在的路径和文件名。 2.3.2 客户端图文混合显示 在ASP中无法用一个ASP文件同时处理文字和图像信息。因为在显示文字信息时HTML的 HEAD中的CONTENT一”TExT/HTML”,而显示图像贝虬 须是CoNTENT=”IMAGE/GIF”,或者是 coNTENT一”IMAGE/JPEG” 为解决图文混合显示的问题,我们采用如下方法;用一个单独的ASP文 件处理图像,然后在处理文字信息的ASP文件中调用这个ASP文件。具体见下面所列的图文混合显示 程序代码(showimg.asp): <html> <head> <meta http—equiv ̄”content—type”content---=”text/html;charset=gb2312”> <title>显示结果</title> </head> 维普资讯 http://www.cqvip.com

湖州职业技术学院学报 2006拒 <body bgcolor ̄azure> < @Language ̄VBSeript > <center> <table border ̄”1”width ̄”70 ”height ̄--”80 ”> <tr> <td width=”100 ”height=”20 “><p align ̄-”center“>图形显示</td> </tr> <trY> <td width=“100 ”height- ̄”80 “rowspan- ̄-”3”colspan=”2”> <img src一”gif.asp”></td> </tr> </table> <p><a href=”javascript:history.back();”>回到上一页</a></p> </center> </body> </html> 单击“显示图形”链接,即可将即将上传的图形文件在客户端中显示出来。 3结束语 上述代码在Windows 2000+SQL Server 2000环境下运行并获得了通过。 在研究与测试过程中,得到了牵永新、雷嚏、沈剑峰等同志的走力帮助.在此一秉感谢! 参考文献: [1]肖金秀.ASP网络编程技术[M].北京:清华大学出版社,2001:37—69. [2]清源计算机工作室.ASP动态网站设计与制作[M].北京:机械工业出版社。2001:138~165. [3]清汉计算机工作室.ASP开发实例[M].北京:机械工业出版社,2000 t 120—145. C4]TigerwenoL ASP十Sc Server之图像数据处理[EB/OL].http://www.csdm net/develop/Read_Artid ̄asp?id=21196.ZOO5 06—15. [5]郑浩,张蔚.SQL Server存储图像数据的策略与方法[EB/OL].http //www.31soft.com/dowuload/info/340,htm,2005—07—01 [6]Rebecca M,Riordan.Microsoft SQL Server ZOO0程序设计教程[M].莱恩工作室译.北京;北京大学出版社,2001:5O一160. [7]陈峰棋.ASP与SQL网页数据库程序设计[M].北京:科学出版社,2002:35—130. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- nryq.cn 版权所有 赣ICP备2024042798号-6

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务