搜索
您的当前位置:首页正文

基于Asp的无组件文件上传技术

来源:小奈知识网
维普资讯 http://www.cqvip.com

2002疰 后勤工程学院学报 第1期 基于Asp的无组件文件上传技术 何 明 李中学廖虎雄 (后勤自动化工程系) 摘要 文件上传在Web技术中应用范围非常广泛,针对于目前文件上传普遍采用组 件的实现方法有一定的局限性,本文研究了基于浏览嚣的无组件上传的工作原理,并给出了采 用Asp技术将上传给Web服务嚣的数据进行分离与显示的技术实现,是一种在B/S系统等实 际应用中可以借鉴的简单、快捷而经济的文件上传方式。 关键词 B/S系统;文件上传;Asp技术 中图分类号:TP393.18 文献标识码:A 随着Internet特别是Web技术的不断发展.为构建信息系统提供了全新的开发模式,基于Web技术 平台的B/S系统、三层结构系统.已是管理信J息系统发展的趋势。文件上传技术是Web服务器提供的一 项非常有用的功能,广泛应用于网站和B/S系统中,如通过浏览器上传文档、图片、歌曲等附件,但这种 功能的实现大多是采用了具体的上传组件,往往需要编写复杂的程序或者下载、购买相应的组件,因而 有一定的局限性;笔者在使用Asp技术进行仓库通用软件开发平台信息系统开发过程中,综合了多方面 问题的考虑,使用了无组件上传技术,并对此作了一些理论和实践上的探讨与研究。 1 工作原理 通过浏览器上传文件至服务器,就不能不提及RFC J876建议的规范…:首先在上传的Hfml页面中 要有一个form域,它可使客户端输入的数据传送给服务器;其次form元素的enetype属性设置为 muhipart/form—data,method属性设置为post;再次form对象应有file元素.用于指定需要上传的文件; 最后设置form的action属性,即需要一个相应的后台处理程序,通过一个submit元素将表单选择的需要 上传的数据提交给Web外部程序进行处理。 需要指出的是,通过此方式上传给Web服务器的数据是以一种二进制文件流的格式进行的 ,并 且上传数据也并非仅仅包含上传文件的具体数据信息,同时也包含了客户端上传页面的一些格式信息。 假设用Asp技术已经上传了一个word文件给Web服务器,通过Response的BinaryWrite方法可把 上传的数据取出到浏览器中显示,得到如下的结果: ……………………一………7dl37a2f84c Content—Disposition:form—data;name= “;filename=”C:、My Documents\Words\fj doc Content—Type:applicatim ̄/msword 1.|・上传的具体数据信息…} ……………………………一7d137a2 ̄4c Content—Disposition: form—data;Ha/tie 7dl 37a2f84c—— ……………………………一由此可得到上传数据,它包含了一些控制信息,可划分为三部分:数据头、数据正文、数据尾.而实 际需要的是数据正文部分,这就需要编制相应的程序把头尾数据去掉,在实施中需要借助于头尾的相关 总后司令部资助顷目f司自2001】103 J 收稿日期:2001—11一o9 何 明(1978),男,江西赣州人,硕士生,主要从事管理信息系统研究 维普资讯 http://www.cqvip.com

6 后勤工程学院学报 2002拄 信息,如文件存放路径、文件类型以及起止的一些特殊标志,把数据提取出来,通常最有效的方法是把这 些二进制文件流数据保存至数据库中,从而转变为对数据库的一些简易操作进行处理。 2 技术实现 以下是采用Asp技术开发信息系统的实例,开发中使用了大型数据库Oracle8 16,它的long raw/raw/blob等数据类型都可以存储二进制数据,假设数据表名为ck_tab—gLfj 数据表结构为 英文字段名 中文字段名 字段类型 id 序号 number 附件long raw 具体技术实现思路为:通过表单上传数据・>通过数据库存取数据一>通过浏览器显示数据,即整 个程序包含了三部分:一个上传页面0sc.htm,一个数据处理页面fjsc.asp,一个数据显示页面fjxs.asp (1)上传页面68c.htm <form name ”f0rm1 enctype=”multipart/form—data。’action=”fjsc.asp”method=”post。。> <P><inputtype:”file”name=“ ”id=”filel > ‘P><inputtype=”submit name=”submitl”value=”上传 > </foril1) (2)数据处理页面fjsc.asp <%… Response、Buffer=true formsize=Request.TotalBytes -从客户端接收数据的大小 formdata=Request.BinaryRead(formsize) ・以二进制方式读取客户端使用post方法所传送的数据 bncrlf=Chr8(13)&ChrB(10) -bncrlf表示回车换行 divider:LeftB(formdata,elng(InStrB(formdata,bncrlf))一1) ・通过确定bnerlf来分离数据 datastart:InStrB(formdata,bncrlf&bncrlf)+4 ・数据正文开始 dataend=InStr8(datastart+1,formdata,divider)一datastart -数据正文结尾 data=MidB(formdata,datastart,dataend) ・截取的数据正文部分数据 sql=”select from ck—tab-gL0 order by id desc” ・连接Oracle数据库 set rs=Session( DataConn”).Dbcre8teDynaset(sq1.0) if rs.Eofthen ・设置Id值 id=1 else id=rs( id”)+1 endif rs.DbAddnew -运用Orafields对象的DbAddnew方法新建纪录 rs(”id ):id session(”id )=rs(”id ) ・传递标识参数给数据显示页面 rs.fields(” ).DbAppendchunk data ・运用DbAppendchunk方法把数据保存至数据库 rs.DbUpdate ・运用DbUpdate方法更新纪录 …%> (3)数据显示页面0xs.asp <%… sq!=”select from cktab_gl_—f3 where id= &session(“id )& 一连接Oracle数据库 set r8=Session(”DataConn”).DbCreateDynaset(sql,4) 维普资讯 http://www.cqvip.com

第1期 何 明等 基于Asp的无组件文件上传技术 7 赋初值:定义每次读取数据截取大小为1024bytes Offset=0 Do varchunk=rs.fields(“fj”).DbGetChunk(offset varslze.varsize)-运用DhGetChunk循环读取数据 text=text&varehunk offset=offsel+l size=LenB(varchunk) loop until size(varsize Response.BinaryWrite(text) …・求出每次取出数据的具体字节数 ・判定循环结束条件 。运用BinaryWrite方法直接显示二进制数据 %> 浏览器对于默认的一些文件格式,如htm、txt、gif等文体格式可直接在浏览器中显示,但对于doc、 wav等文件格式就显示为乱码,但由于系统需要利用Word应用程序来保留工作流文件痕迹并进行显示 的功能,笔者尝试了两种方法:第一种是设置Response的Content—Type属性,即Mine格式.用来设置 Web服务器响应给客户端的文件类型,浏览器会根据其相应格式打开应用程序内嵌在浏览器中进行显 示;第二种是设置Response的AddHeader属性,它允许自行设置Html页面的Http标题,它将直接调用 相应的应用程序进行显示”。程序代码如下: . 1)Response.Content一 pe=”Applicatiot ̄msword” 2)fin=”tempfilename、doe” lf'ttp文件类型为Application/msword  ̄'ord格式临时文件 -设置Http标题 Response.AddHeader”Content—Disposition”,”a}1achmen ;mename=’ &tfn 3 结 语 本文研究了基于浏览器的无组件上传的工作原理,通过利用Asp技术对上传给Web服务器的二进 制数据进行了必要的分离处理和显示,在仓库平台信息系统的实际应用中取得了较好的使用效果,对于 在网站或B/S系统的实际应用中,可进行一定的扩展和更全面的考虑.完全可 采取这种简单、快捷而 经济的无组件方式进行文件上传功能的实现,而其关键之处就在于掌握RFC1876建议规范的上传数据 的格式,并编制相应的Web外部程序对上传数据进行必要的处理。 参考文献 1 Nebd E. M ̄inter 1._RF’C1567:Form—b ̄sed File Upload Io HTML,www chin ̄sp tom.20o0 2 王新房 等基于浏览器的文件t传技术研究计算机应用,20OO(11) 3 林金霖ASP实务经典北京:中国铁道出版}七.1999:37 Using No Component Technology to Upload Files Based on Asp HE Ming LI Zhongxue LIAO Huxiong (Dept.of Logistical Automatic Eng.1 ABSTRACT Uploading files is used widely in web technology application,flow it usually uses component technology to do that.but it has sorfile limitations.This paper discusses the working principle of not using component technology,and gives fin example based on Asp.It is a simple,quick and economical way to upload files that can be applied to the B/S system. Keywords:B/S system;upload files:Asp technology. 

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

Top