2023年7月14日发(作者:)
维普资讯
用VB开发ASP上载组件 汤亚飞 摘 要分析ASP向服务器上载信息流的格式、拆分各表单域信息方法,用VB设计了基于Web的文本与文件混合上载的 ActiveX组件。 关键词VB,编程,ASP,组件,文件上载 开放式信息网站应允许注册用户(企业)直接通过Web 向服务器提供各种信息,存入服务器的数据库中,供客户查 询。这些信息往往是多种多样,不仅包括普通的文本,也可能 【分隔字符串】0D 0A【表单域头信息】0D 0A 0D 0A内容 0D 0A f最后一个表单域) 【分隔字符串】2D 2D 0D 0A 1.3 ASP中拆分表单域 根据上述信息结构,假定有四个表单域,在ASP中可采 (结尾字符串) 包括图片、音频等文件,例如企业的文字说明、代表企业形象 的照片、设备生产厂家提供设备外形图片、设备的CAD格式 图形文件。服务器端处理上载信息的程序应考虑如下问题:多 用下列VBScript代码拆分出各表单域的值,并存人数组 MyArray中。 C rLf=ch rb(1 3)&ch rb(1 0) C rLf)一1)) 隔手符串 Dim MyArray(4) For I=1 tO 4 元素(文本信息和二进制文件)同时上传、上传文件大小限 制、上传信息存放数据库等。实现这一功能的方法很多(如 CGI、ISAPI),但微软倡导ASP技术。 一0DOA二进 形 Sepa rationSir=LeftB(PostedData C}ng(1nst rB(PostedData 、服务器端对数据的处理 1.1上传网页的设计 客户端向服务器端提交信息一般是通过表单实现:对于普 存放吾表单斌数据 数蛆) DataSta rt=lnstrB(PostedData.C rLf&C rLf)+4 表单域数据起始位置 DataLng=lnst rB(DataSta rt+1,PostedData Sepa ra・ 通的HTML页面,表单属性选项中的编码类型为缺省的。若表 单包含上载文件,其编码类型必须是Muhipart/form—data,指 定上载文件的Input表单域类型应为file(在HTML编辑中, 修改type=“file”即可) !.2数据读取与数据的格式 若表单中只包含文本型表单域,则可用Request.Form(表 单域名称)取出各元素值 但当表单中包含文件型表单域时, 不能采用此法取出表单域的值,其原因是:Request.Form只能 tionSt r)一DataSta rt一2 表单域数据长度 MyArray【1)=MidB(PostedData,DataSta rt DataLng) PostedData=MidB(PostedData DataSta rt+DataEnd) Next 文件型表单域可直接存人数据库或存为磁盘文件,文本型 表单域的值为外码系列,应转换为VB字符串系列(具体方法 见下面的组件代码部分,内部函数RetText)。上述VBScfipt程 序直接获取ASP混合上传的多个文本与文件,称为无组件上 载。 取出所提交文件在客户端的完整路径,并非文件的内容。此时 只能用Request.BinaryRead以二进制方式读取客户端提交的所 有信息,方法如下: lngCount=Request.TotalBytes 上传数据字节总数 二、利用VB制作上传文件的组件 为方便编程或发布给其它用户使用,可根据上述原理,用 VB制作一个组件。在VB环境下,新建工程,选择ActiveX DLL,工程名:GetPost,类模块名:GetData。组件具有如下功 能:返回上传的文件数据、类型;取文本型表单域的值(已转换 为VB字符串方式);将上传文件保存在服务器中(VBScfip不 PostedData=Request.BinaryRead(1ngCount)读取昕有提交 的数据(二进制数据) PostedData中包含各表单域的头信息和数据,各表单域之 间由一字符串分隔,结构如下: 【分隔字符串】0D 0A【表单域头信息】0D 0A 0D 0A内容 0D 0A(第一个表单域) ...... 支持写外部文件的功能,只能由组件实现)、在组件内部, RetBinary和RetText两函数宴现二进制与字符串互相转换: (其它表单域)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689305837a228334.html
评论列表(0条)