选择显示字体大小

asp中实现文件上传方法的研究

摘要:在基于浏览器/服务器的应用环境中,在浏览器中上传各种类型的文件一直是困扰用户文件管理应用的难题之一。在http中上传文件有三种机制:rfc1867,put和webdav。常用的实现方法是利用在rfc1867中引入的一个新类型:file以及ado stream对象。 本文对上述上传方法及实现原理作了论述,并给出了具体解决实例。

  关键词asp 组件 file对象

  当前,基于浏览器/服务器模式的应用比较流行。当用户需要将文件传输到服务器上时,常用方法之一是运行ftp服务器并将每个用户的ftp默认目录设为用户的web主目录,这样用户就能运行ftp客户程序并上传文件到指定的 web目录。这就要求用户必须懂得如何使用ftp客户程序。因此,这种解决方案仅对熟悉ftp且富有经验的用户来说是可行的。 如果我们能把文件上传功能与web集成,使用户仅用web浏览器就能完成上传任务,这对于他们来说将是非常方便的。但是,一直以来,由于file system object的仅能传送文本文件的局限,所以asp最大的难题就是文件上传问题。下面介绍的就是如何在基于http协议的网页中实现文件的上传。

  一.通过http上传的三种机制

  通过http上传有三种机制:rfc1867, put 和 webdav。

  put 是在http 1.1引入了一个新的http动词。当web服务器收到一个http put和对象名字,它将会验证用户,接收http流的内容,并把它直接存入web服务器。由于这可能会对一个web站点造成破坏,并且还会失去http最大的优势:服务器可编程性。在put的情况下,服务器自己处理请求:没有空间让cgi或者asp应用程序介入。唯一让你的应用程序捕获put的方法是在低层操作,isapi过滤层。由于相应的原因,put的应用很有限。

  而webdav允许web内容的分布式认证与翻译。它引入了几种新的http动词,允许通过http上传,锁定/解锁,登记/检验web内容。office 2000中的"save to web" 就是通过webdav来实现的。如果你所感兴趣的一切都是上传内容,webdav应用得非常出色,它解决了很多问题。 然而,如果你需要在你的web应用程序里面上传文件,webdav对你就毫无用处可言。象http put一样,那些webdav的动词是被服务器解释的,而不是web应用程序。你需要工作在isapi过滤层来访问webdav的这些动词,并在你的应用程序中解释内容。

  rfc1867 (http://www.ietf.org/rfc/rfc1867.txt) 最终被w3c在html3.2中接受前,是作为一种建议标准。它是一种非常简单但是功能很强大的想法:在表单字段中定义一个新类型。

<input type="file">

  并且在表单本身加入了不同的编码方案,不再使用典型的:

<form action="formproc.asp" method="post">

  而是使用:

<form action="formproc.asp" method="post" enctype="multipart/form-data">

  这种编码方案在传送大量数据的时候,比起缺省的"application/x-url-encoded"表单编码方案,显得效率要高得多。url编码只有很有限的字符集,使用任何超出字符集的字符,必须用'%nn'代替,这里的nn表示相应的2个十六进制数字。例如,即使是普通的空格字符也要用'%20'代替。而rfc1867使用多部分mime编码,就象通常在e-mail消息中看到的那样,不编码来传送大量数据,而只是在数据周围加上很少的简单但实用的头部。主要浏览器的厂商都采用了建议的"浏览..."按钮,用户能很容易的使用本地"打开文件..." 对话框选择要上传的文件。

  rfc1867仍然将大多数文件上传的灵活方法留给了你的web应用程序。put用得很有限。webdav对内容的作者很有用,比如frontpage用户,但是对想在web应用程序中加入文件上传的web开发者来说很少用到。因此,rfc1867是在web应用程序中加入文件上传的最好的办法。

  在实际应用中,微软免费提供了posting acceptor 。asp不懂"multipart/form-data" 编码方案。取而代之,微软提供了posting acceptor ,posting acceptor是一种在上传完成后,接受repost到一个asp页的isapi应用程序。

  software artisans的sa-fileup是最早的商业active server组件之一。几经改进,现在作为一个纯粹的asp组件存在。

  国内也有类似的组件被开发使用,如由http://www.aspcn.com asp中华网开发的aspcnup.dll组件;彦程工作室(www.greatengine.com)开发的geupload10.dll组件等。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

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