选择显示字体大小

asp组件上传(2)

     二.基于asp的文件上传实现原理分析
  
    基本原理是:采用ado stream对象的binaryread方法将form中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。
  
    下面是上传文件页面的一个例子(upload.htm):
  
  <html>
  <body>
  <form name="upload" method="post" enctype="multipart/form-data" action="upload.asp">
  <input type="file" name="filename">
  <input type="submit" value="upload"></td>
  </form>
  </body>
  </html>
  
    程序中使用了文件对象,这样在upload.asp中采用binaryread方法读来的原始数据就不仅仅是选择的文件本身的数据,还包含该文件在用户硬盘上的路径、类型、提交页面的表单域名等相关信息的描述,这样我们就需从中提取出文件的具体内容。根据分析,数据的头部信息与数据的分界线是两对回车换行符,尾部也有分隔信息,我们可以采用类似以下的方法获取文件数据。
  
  dim formdata.formsize,datastart,clstr,divstr
  formsize=request.totalbytes
  formdata=request.binaryread(formsize)
  clstr=chrb(13)&chrb(10)
  datastart=instrb(formdata.clstr&clstr)+4
  '4是两对回车换行符的长度
  divstr=leftb(formdata,instrb(formdata,clstr)-1)
  datasize=instrb(datastart+1,formdata,divstr)-datastart-2
  formdata=midb(formdata,datastart,datasize)
  formdata就是文件的内容了。
  
    中间根据需要,可进行相应的处理。最后的工作就是将文件保存了。保存的方法可以有两种:一种是利用vb或vc之类程序中的二进制文件操作方法,在工程中加入适当的类型库,最终编译成dll文件,使用时再将该dll文件注册就可以了。文件存贮程序如下:
  
  public function savefile(pathname as string) as string
      dim objcontext as objectcontext
      dim objrequest as request
   set objcontext=getobjectcontext()
      set objrequest=objcontext("request")
      '以下的一段代码是进行文件存贮的有关操作
   dim formdata() as byte,clstr,divstr
      dim datastart as long,datasize as long
      datasize=objrequest.totalbytes
      redim formdata(datasize-1)
      formdata=objrequest.binaryread(datasize)
      clstr=chrb(13) & chrb(10)
      datastart=instrb(formdata,clstr & clstr)+4
      divstr=leftb(formdata,instrb(formdata,clstr)-1)
      datasize=instrb(datastart+1,formdata,divstr)-datastart-2
      formdata=midb(formdata,datastart,datasize)
      '创建一个二进制文件并将formdata写入其中
      open pathname for binary as 1
      put #1,,formdata
      close #1
      savefile="ok!"
     end function
  
    第二种方法是利用ado stream中提供的二进制文件操作方法来完成,保存文件的语句是: streamobj.savetofile (filename,2)。在 这种操作中,我们可以将有关的操作存放在一个类文件中,在应用时,直接将该类文件包含在asp程序中就可以了
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons