仓酷云

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

[学习教程] ASP编程:ASP文件上逼真功 第三重:集成类、多语...

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:34:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。上传  这个成绩已不是甚么奇怪成绩了,网上也有年夜把的教程,但年夜多半是授人以鱼,而不授人以渔,经由辛劳的材料搜集,思索,调试,收拾,我基础上已把这个成绩从道理上弄分明了,如今依据我本人的了解,在典范程序的基本上,加以注释,但愿能对部分网友(比我还菜的:-))有所匡助。

  请诸位年夜虾能对个中的不正或不良这处予以斧正。

  程序中stream工具的用法上参考了“化境HTTP上传程序Version2.0”在代码,在此对稻喷鼻老农和梁无惧暗示衷心的感激和由衷的敬意。

  先来剖析一下,为前面的数据剖析算法办理基本,以下是我摘录的一小段网页中提交的二进制数据:
-----------------------------7d31ec15102d0
Content-Disposition:form-data;name="txtTitle"

满脑的设法
-----------------------------7d31ec15102d0
Content-Disposition:form-data;name="filImage";filename="F:material木纹背景pic016.jpg"
Content-Type:image/pjpeg

?JFIFC

!!E..EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE?"
?}!1AQa"q2?#B绷R佯$3br?
NsRJ=ǜC,%??Xm鼽???R胄C?
g?F?tS?B:uLc
g不t凄L琰h`0p
g41?9$筵F]?d??u"??
-----------------------------7d31ec15102d0
Content-Disposition:form-data;name="btnUpload"

Upload
-----------------------------7d31ec15102d0--

  蓝色的字符的内容我们应当熟习吧,两头的乱码就是上传的文件的内容,实在我们要做的就是将这一堆数据举行剖析,挑出对我们有效的数据保留上去就OK了。剖析数据就是查找一些标记性的内容,如回车换行符,“----------”标记,用两个指针断定两个地位,然后提取数据,我的算法不晓得好欠好,自己的数据布局是学得很烂的,非常sorry。

以下是一个完事的使用,个中的类界说能够与进另外一个文件,利用的时分只需用

 <!--includefile="LjUpload.cls"-->

命令包括出去就能够了。

LjUpload.asp:

<%@Language=VBScript%>
<%optionexplicit%>

<scriptlanguage=vbscriptrunat=server>

 privatesrmRequestData   adodb.stream工具,保留从form中提交来的一切数据

 privateadTypeBinary   adodb.stream工具的叁数:前往二进制数据
 privateadTypeText   adodb.stream工具的叁数:前往文本数据
 privateadModeRead   adodb.stream工具的叁数:工具可读
 privateadModeWrite   adodb.stream工具的叁数:工具可写
 privateadModeReadWrite   adodb.stream工具的叁数:工具可读写

 classLjUpload   界说一个类,称号为LjUpload。
  
  privatebytCrLf   单字节的回车换行符,共2字节
  privatebytSub   单字节的“-”标记,共8字节
  privatebinData    二进制数据变量,保留一个提交数据的复本,便於操纵

  privatedicForm   保留form文本域的信息
  privatedicFile   保留form文件域的信息
  privatestrName   form表单的输出域称号
  privatestrValue   form表单的输出域值
  privateobjFile   文件信息工具,保留文件相干的信息,详细叁看classLjFile的界说

  privateposB   二进制数据读写指针,入手下手指针
  privateposE   二进制数据读写指针,停止指针
  publicCharset   言语属性设置
  
  privatesubClass_Initialize   类初始化历程
   
   bytCrLf=getSBfromDB(vbcrlf)
   bytSub=getSBfromDB("--------")
   Charset="gb2312"   默许言语属性设置为简体中文:gb2312
   
   adTypeBinary=1   前往二进制数据
   adTypeText=2   前往文本数据
   adModeRead=1   工具数据可读
   adModeWrite=2   工具数据可写
   adModeReadWrite=3   工具数据可读写
  endsub
  
  publicsubGetData   类的翻开历程,上传文件及剖析数据的历程
   
   setsrmRequestData=server.CreateObject("adodb.stream")   创建一个adodb.stream工具
   
   srmRequestData.Type=adTypeBinary   指定前往数据范例
   srmRequestData.Mode=adModeReadWrite   指定翻开形式
   srmRequestData.Open   翻开工具
   srmRequestData.Writerequest.BinaryRead(request.TotalBytes)   猎取一切form提交的数据
   
   srmRequestData.Position=0   读写指针从头定位至工具头部,写数据,指针已指向工具尾
   binData=srmRequestData.Read   在变量中保留提交数据的复本,便於操纵
   
   setdicForm=server.CreateObject("scripting.dictionary")用来保留文本信息
   setdicFile=server.CreateObject("scripting.dictionary")用来保留文件信息

   posB=instrb(binData,bytSub)   入手下手剖析所猎取的二进制数据
   posB=instrb(posB,binData,bytCrLf)+2+2是到场回车换行符自己的长度
   posB=instrb(posB,binData,getSBfromDB("name="""))+6
   dountilposB=6   把持前提的设置有多种体例,这里的仅供叁考
    posE=instrb(posB,binData,getSBfromDB(""""))
    strName=getTextfromBin(srmRequestData,posB,posE-posB)
   
    posB=posE+1指针挪动到“"”的後面
    posE=instrb(posB,binData,bytCrLf)
    
    ifinstrb(midb(binData,posB,posE-posB),getSBfromDB("filename="""))>0then这是一个file域
     posB=instrb(posB,binData,getSBfromDB("filename="""))+10
     posE=instrb(posB,binData,getSBfromDB(""""))
     setobjFile=newLjFile   创建一个文件信息工具
     ifposE>posBthen
      objFile.FileName=getFileNamefromPath(getTextfromBin(srmRequestData,posB,posE-posB))   写进文件称号
      posB=instrb(posB,binData,getSBfromDb("Content-Type:"))+14
      posE=instrb(posB,binData,bytCrLf)
      o</p>实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 09:59:23 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
愤怒的大鸟 该用户已被删除
板凳
 楼主| 发表于 2015-1-28 22:24:06 | 只看该作者
掌握asp的特性而且一定要知道为什么。
柔情似水 该用户已被删除
地板
发表于 2015-1-31 19:33:53 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
乐观 该用户已被删除
5#
发表于 2015-2-3 17:44:39 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
山那边是海 该用户已被删除
6#
发表于 2015-2-9 03:52:29 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
再现理想 该用户已被删除
7#
发表于 2015-2-26 20:57:09 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
只想知道 该用户已被删除
8#
发表于 2015-3-8 17:43:58 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
海妖 该用户已被删除
9#
发表于 2015-3-16 08:20:28 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
简单生活 该用户已被删除
10#
发表于 2015-3-22 21:30:43 | 只看该作者
那么,ASP.Net有哪些改进呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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