asp组件上传

浮生若梦丶ev

浮生若梦丶ev

2016-01-29 17:07

asp组件上传,asp组件上传

  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://image.21tx.com/files/20060405/21463.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组件存在。[next]

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/asp/)

 二.基于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方法读来的原始数据就不仅仅是选择的文件本身的数据,还包含该文件在用户硬盘上的路径、类型、提交页面的表单域名等相关信息的描述,这样我们就需从中提取出文件的具体内容。根据分析,数据的头部信息与数据的分界线是两对回车换行符,尾部也有分隔信息,我们可以采用类似以下的方法获取文件数据。

展开更多 50%)
分享

猜你喜欢

asp组件上传

ASP
asp组件上传

中文的无组件文件上传ASP函数

ASP
中文的无组件文件上传ASP函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Asp无组件上传进度条解决方案

ASP
Asp无组件上传进度条解决方案

一个的无组件上传的ASP代码

ASP
一个的无组件上传的ASP代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ASP ActiveX 组件

ASP
ASP ActiveX 组件

ASP 组件指南

ASP
ASP 组件指南

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

使ASP程序跨浏览器

使ASP程序跨浏览器

ASP中非数据库实现数据对象的定义及处理

ASP中非数据库实现数据对象的定义及处理
下拉加载更多内容 ↓