教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

asp文件上传(ASP文件上传原理分析及实现实例)

  asp 文件上传(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存在。   二.基于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程序中就可以了。具体处理方法,请参阅有关介绍。   三.文件上传实现方法实例  实现文件上传可使用或无方式。对于类,比如说microsoft posting acceptor(简称mpa),就是公司发布的一个免费,这类的安装也比较方便。对于的mpa,运行它的安装文件就可以了。而一般的dll形式的,我们则需要进行注册。例如,要使用aspcnUP.dll,只要在Window 2000上执行regsvr32 [path\]aspcnUP.dll,系统出现注册成功的信息提示就可以使用该了;对于无类,如http://www.5xsoft.com/的无上传类-upload_5xsoft。在使用时,只要在处理程序中包含以下的语句就可以了:
  <!--#include FILE="upload.inc"--> set upload=new upload_5xSoft '建立上传对象
  有关的属性与操作方法,请参阅该的使用手册。   下面是詀spcnUP.dll为例,上传部分类型文件的源代码(upload.asp):
  <% @ language="vbscript"
  Set fileUP=Server.CreateObject("aspcn.Upload")
  fileUP.Maxsize=200000
  fileUP.Path="d:\upfile"
  fileUP.Upload
  For i=0 to fileUP.Count
  fieldname=fileUP.FieldName(i)
  If fileUP.FileType(fieldname)="zip" Or ileUP.FileType(fieldname)="rar" Then
  fileUP.Save fieldname
  End If
  Next
  Set fileUP=Nothing
  %>
  四.结束语  应用模式还在快速地发展着,在ASP.NET中,已经内置了文件上传的功能,使用非常简单方便。作为一种全新的技术,ASP.NET并不只是ASP的简单升级,它是一个用于Web开发的全新框架,其中包含了许多新的特性。ASP.NET提供了更易于编写、结构更清晰的代码,利用这些代码我们将会更容易地进行再利用和共享,从而开发出更多更实用的程序来。

王者荣耀台服叫什么(王者荣耀国际服叫啥名)王者荣耀国际服是Garena与腾讯天美工作室所合作开发的一款MOBA角色扮演手机游戏,同时也是王者荣耀的国际服版本,在游戏中,亚美俄罗斯中东印度等多个地区可以同时畅玩,且还有超大几经典美文赏析(黄秀生美文欣赏)经典美文赏析(黄秀生美文欣赏)黄秀生美文欣赏九华后山在青阳,人们习惯地把九华山南边一面称为前山,而把九华山的北边一面称为后山。其实,这后山的风景之美,不在前山之下。巍峨挺拔的天华峰歌手霍尊父亲母亲是谁(霍尊的悲欢往事)歌手霍尊父亲母亲是谁(霍尊的悲欢往事)霍尊的恋情终于浮出水面了?近日,一个ID叫游梦岛陈露的博主,发了一条动态,不仅发了她跟霍尊很亲密的合照,还艾特了霍尊,并配了一个红色爱心的表情午夜凶铃1(午夜凶铃原著小说)午夜凶铃1(午夜凶铃原著小说)午夜凶铃这部恐怖电影许多人即便没看过,也肯定是听说过的。但实际上今天我要谈的小说环界,作为午夜凶铃系列电影的原著小说,本身来说,是没有多少恐怖元素在的嵌入式系统开发(嵌入式开发与C开发的区别是什么?)嵌入式系统开发(嵌入式开发与C开发的区别是什么?)我们常听到嵌入式开发与C开发,那么他们到底有什么区别呢?今天主要从概念以及技术应用领域的不同来介绍。一概念有区别C是C语言的继承,奥沙利文夺冠(奥沙利文职业生涯冠军全记录!)奥沙利文夺冠(奥沙利文职业生涯冠军全记录!)随着世锦赛次轮被麦克吉尔用一杆85分绝杀,奥沙利文正式结束了本赛季的所有比赛。自199293赛季成为职业选手以来,奥沙利文此前每个赛季至人类是怎么诞生的(人类高层隐瞒了什么)人类的起源一直是一个永恒的话题,目前最让大众接受的有两种说法,一种是神创论,另一种则是我们熟知的进化论,虽然进化论反驳了神创论,但依然有很多人认为,人类是高等文明创造的,甚至形成了什么是诈骗(告人诈骗需要什么证据)网络发展迅速到人人时时刻刻都离不开了,电信网络诈骗更是无处不在,诈骗手法众多,让人防不胜防,我们除了要不断补充防骗知识以外,一些基本操作也要熟记在心,至少,收藏起来以备不时之需总是dj喊麦词(学习专业DJ打碟喊麦)dj喊麦词(学习专业DJ打碟喊麦)学习专业DJ打碟喊麦对自己以后的工作也是有着充实的保障。多一项专业技能,也就多了一个吃饭的手艺,但学习专业的DJ打碟和喊麦是有过程的,学习喊麦也要爱一个人好累(喜欢一个人真的太累了)爱一个人好累(喜欢一个人真的太累了)你有没有用力的喜欢过一个人?这是一种什么样的感觉呢?明明对她很失望,感觉一点安全感都没有,可就还是卑微的喜欢着,试图还幻想只要坚持坚持,会走到一和烟价格表(金圣香烟价格表图)和烟价格表(金圣香烟价格表图)金圣香烟出自江西南昌卷烟厂,该品牌香烟1994年创立,该香烟配方中的天然中草药萃取液金圣香是该品牌的特色,该香烟具有自然生香舒心润声的特征。金圣香烟价
mpg转换器(mpeg4格式转换器有哪些?)mpg转换器(mpeg4格式转换器有哪些?)在视频自媒体这一行做久了之后,本来我是不熟悉mpg(又叫mpeg)格式的,因为接触得多了,也慢慢知道了它。其中,mpeg4应用范围很广,被囚禁的马里尤斯(德鲁埃世界名画鉴赏语音讲解)被囚禁的马里尤斯(德鲁埃世界名画鉴赏语音讲解)被囚禁的马略大家好!今天给大家介绍法国画家德鲁埃创作于1786年的被囚禁的马略,这幅油画收藏于巴黎卢浮宫。局部图让杰曼德鲁埃生于176被囚禁的马里尤斯(经典收藏世界名画100幅带赏析)被囚禁的马里尤斯(经典收藏世界名画100幅带赏析)1路易斯。利奥波德。布瓦伊桌球这可是人家1807年画的,看看两百年前欧洲人的生活吧。2列奥纳多达芬奇蒙娜丽莎成功地塑造了资本主义上豪华轿车品牌(解读6月豪华中大型轿车排行)豪华轿车品牌(解读6月豪华中大型轿车排行)汽车走进生活,选最适合自己的车。哈喽,大家好,我是红涛说车。近两年豪华品牌汽车之间的竞争变得异常激烈,不过俗话说得好,几家欢喜几家愁,有的我们的生活充满阳光!(我们的生活充满阳光听众喜爱的广播歌曲!)我们的生活充满阳光!(我们的生活充满阳光听众喜爱的广播歌曲!)磁带封面1980年初,中央人民广播电台和歌曲编辑部曾成功地联合举办过一次听众喜爱的广播歌曲评选活动,这次评选活动极大地量子芝诺效应(神奇的量子芝诺效应)量子芝诺效应(神奇的量子芝诺效应)量子芝诺效应是一种量子效应如果我们持续观察一个不稳定的粒子,它将不会衰变。我们可以通过足够高频率的观测来使其冻结在它的已知初态。简单地说就是一个微五龙潭地下空间(五龙潭地下空间,是真实存在的吗?)五龙潭地下空间(五龙潭地下空间,是真实存在的吗?)五龙潭地下空间,又名乌龙潭龙居泉。金名泉碑著录,称灰湾泉,济南七十二名泉之一。2004年10月28日凌晨,济南名泉五龙潭潭池突发局全新一代马自达6(全新马自达6效果图曝光)全新一代马自达6(全新马自达6效果图曝光)懂车帝原创产品此前,海外媒体关于新一代马自达6已经透露了部分信息。日前,海外媒体又发布了新一代马自达6的效果图,消息显示,新车将基于后驱平奔驰e260怎么样(价格最坚挺的奔驰E260)奔驰e260怎么样(价格最坚挺的奔驰E260)这两年中国汽车市场销量不是很好,很多合资车国产车销量都出现了不同程度的下跌。但是唯独豪华品牌貌似不受这个下跌的影响,出现了逆势上扬,包沃尔沃越野车(这样的沃尔沃XC90居然能越野?)沃尔沃越野车(这样的沃尔沃XC90居然能越野?)如果要给沃尔沃品牌匹配一个关键词,安全应该是没有悬念的。在没有深入了解之前,作为沃尔沃品牌的7座豪华旗舰型SUV沃尔沃XC90,只是小行星将掠过地球(一颗小行星本周将飞掠地球)小行星将掠过地球(一颗小行星本周将飞掠地球)NASA表示,本周将有一颗比埃菲尔铁塔还大的小行星飞近地球。预计时间大概是在美国东部时间6月1日上午10点24分。据美国宇航局表示,这颗