仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 365|回复: 9
打印 上一主题 下一主题

[学习教程] ASP编程:ASP组件上传的三种机制和完成道理剖析

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般上传  ASP组件FILE工具
  以后,基于扫瞄器/服务器形式的使用对照盛行。当用户必要将文件传输到服务器上时,经常使用办法之一是运转FTP服务器并将每一个用户的FTP默许目次设为用户的Web主目次,如许用户就可以运转FTP客户程序并上传文件到指定的Web目次。这就请求用户必需明白怎样利用FTP客户程序。因而,这类办理计划仅对熟习FTP且富有履历的用户来讲是可行的。假如我们能把文件上传功效与Web集成,利用户仅用Web扫瞄器就可以完成上传义务,这关于他们来讲将长短常便利的。可是,一向以来,因为FileSystemObject的仅能传送文本文件的范围,以是ASP最年夜的困难就是文件上传成绩。上面先容的就是怎样在基于HTTP协定的网页中完成文件的上传。

  一.经由过程HTTP上传的三种机制

  经由过程HTTP上传有三种机制:RFC1867,PUT和WebDAV。

  PUT是在HTTP1.1引进了一个新的HTTP动词。当web服务器收到一个HTTPPUT和工具名字,它将会考证用户,吸收HTTP流的内容,并把它间接存进web服务器。因为这大概会对一个web站点形成损坏,而且还会得到HTTP最年夜的上风:服务器可编程性。在PUT的情形下,服务器本人处置哀求:没有空间让CGI大概ASP使用程序参与。独一让你的使用程序捕捉PUT的办法是在低层操纵,ISAPI过滤层。因为响应的缘故原由,PUT的使用很无限。

  而WebDAV同意web内容的散布式认证与翻译。它引进了几种新的HTTP动词,同意经由过程HTTP上传,锁定/解锁,挂号/查验web内容。Office2000中的"Savetoweb"就是经由过程WebDAV来完成的。假如你所感乐趣的统统都是上传内容,WebDAV使用得十分杰出,它办理了良多成绩。但是,假如你必要在你的web使用程序内里上传文件,WebDAV对你就毫无用途可言。象HTTPPUT一样,那些WebDAV的动词是被服务器注释的,而不是web使用程序。你必要事情在ISAPI过滤层来会见WebDAV的这些动词,并在你的使用程序中注释内容。

  RFC1867终极被W3C在HTML3.2中承受前,是作为一种倡议尺度。它是一种十分复杂可是功效很壮大的设法:在表单字段中界说一个新范例。
<INPUTTYPE="FILE">
  而且在表单自己到场了分歧的编码计划,不再利用典范的:
 <FORMACTION="formproc.asp"METHOD="POST">
  而是利用:
<FORMACTION="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使用程序中到场文件上传的最好的举措。

  在实践使用中,微软收费供应了PostingAcceptor。ASP不懂"multipart/form-data"编码计划。取而代之,微软供应了PostingAcceptor,PostingAcceptor是一种在上传完成后,承受REPOST到一个ASP页的ISAPI使用程序。

  SoftwareArtisans的SA-FileUp是最早的贸易ActiveServer组件之一。几经改善,如今作为一个地道的ASP组件存在。
二.基于ASP的文件上传完成道理剖析

  基础道理是:接纳ADOStream工具的BinaryRead办法将FORM中的一切数据读出,从中截掏出所需的文件数据,以二进制文件体例存盘。

  上面是上传文件页面的一个例子(upload.htm):
<html>
<body>
<formname="Upload"Method="Post"Enctype="multipart/form-data"Action="Upload.asp">
<inputtype="file"name="FileName">
<INPUTTYPE="Submit"VALUE="Upload"></TD>
</form>
</body>
</html>
  程序中利用了文件工具,如许在Upload.asp中接纳BinaryRead办法读来的原始数据就不单单是选择的文件自己的数据,还包括该文件在用户硬盘上的路径、范例、提交页面的表单域名等相干信息的形貌,如许我们就需从中提掏出文件的详细内容。依据剖析,数据的头部信息与数据的分界限是两对回车换行符,尾部也有分开信息,我们能够接纳相似以下的办法猎取文件数据。
DimFormData.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文件注册就能够了。文件存贮程序以下:
PublicFunctionSaveFile(PathnameAsString)AsString
    DimobjContextAsObjectContext
    DimobjRequestAsRequest
 SetobjContext=GetObjectContext()
    SetobjRequest=objContext("Request")
    以下的一段代码是举行文件存贮的有关操纵
 DimFormData()AsByte,CLStr,DivStr
    DimDataStartAsLong,DataSizeAsLong
    DataSize=objRequest.TotalBytes
    RedimFormData(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写进个中
    OpenPathnameForBinaryAs1
    Put#1,,FormData
    Close#1
    SaveFile="OK!"
  EndFunction
  第二种办法是使用ADOSTREAM中供应的二进制文件操纵办法来完成,保留文件的语句是:StreamOBJ.SaveToFile(fileName,2)。在这类操纵中,我们能够将有关的操纵寄存在一个类文件中,在使用时,间接将该类文件包括在ASP程序中就能够了
缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。
透明 该用户已被删除
沙发
发表于 2015-1-19 07:31:02 | 只看该作者
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。
山那边是海 该用户已被删除
板凳
发表于 2015-1-25 16:50:31 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
若天明 该用户已被删除
地板
发表于 2015-2-3 11:34:18 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
飘灵儿 该用户已被删除
5#
发表于 2015-2-8 20:34:35 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
莫相离 该用户已被删除
6#
发表于 2015-2-26 06:43:12 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
老尸 该用户已被删除
7#
发表于 2015-3-8 12:31:05 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
深爱那片海 该用户已被删除
8#
发表于 2015-3-15 23:55:56 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
再见西城 该用户已被删除
9#
发表于 2015-3-22 18:10:30 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
活着的死人 该用户已被删除
10#
发表于 2015-3-22 18:10:28 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 04:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表