ASP网页编程之无组件上传类
ASP脚本是采用明文(plaintext)方式来编写的。上传|无组件<%当表单里既有文本域又有文件域的时分,我们必需把表单的编码范例设置成"multipart/form-data"范例
这时候候上传下去的编码文件其实不能间接掏出文本域的值和文件域的二进制数据,这就必要拆分表单域
在上传下去的数据流中在每一个表单域间都有一个随机的分开符,这个分开符是在统一个流中稳定的,分歧的流分开符稳定,
这个分开符在流的最开首,而且以一个chrb(13)+chrb(10)停止,晓得这个后我们就能够用这个分开符来遍历拆分表单域了.
关于文件域,我们要剖析字段名,文件名,文件范例和文件内容,域名是以"name="为前导,并包括在一对双引号中,文件名的值是以"filename="为前导,也包括在双引号里,个中包括文件的全路径和文件名,紧随着前面又是一对回车换行府(chrb(13)+chrb(10)),字符串"content-type:"和两对回车换行之间的内容为文件范例字符串,两对回车换行后到一对回车换行之间的数据为文件内容
关于文本域,我们只需剖析他的值就能够了,域的称号是以"name="以后,用双引号包着,两对回车换行后到以一对回车换行入手下手的域分开符之间为该文本域的值
固然上传下去的流是二进制格局,在操纵的时分必要用一些操纵二进制的函数,而不是平常用的操纵字符串的函数,好比说leftB,midB,instrB等,上面就是算法的完成
ClassGetPost
privateBdataStr,SeparationStr,wawa_stream提交的信息,表单域间分开字符
类初始化
PrivateSubClass_Initialize
setwawa_stream=CreateObject("Adodb.Stream")创立全局流
wawa_stream.mode=3读写形式
wawa_stream.type=1二进制读取形式
wawa_stream.open翻开流
BdataStr=Request.BinaryRead(Request.TotalBytes)猎取上传的一切数据
wawa_stream.writeBdataStr读取数据
SeparationStr=LeftB(BdataStr,Clng(inStrb(BdataStr,ChrB(13)+ChrB(10)))-1)分开字符串
EndSub
类的析构函数,卸载全局流工具
PrivateSubClass_Terminate
wawa_stream.close
setwawa_5xSoft_Stream=nothing
EndSub
前往file型表单域的值(二进制)
PublicFunctionGetFile(FieldName)
DimL1,DataStart,DataLng
L1=InStrB(BdataStr,GetBinary("name="+Chr(34)+FieldName+Chr(34)))
DataStart=InStrB(L1,BdataStr,ChrB(13)+ChrB(10)+ChrB(13)+ChrB(10))+4
DataLng=InStrB(DataStart,BdataStr,SeparationStr)-DataStart-2
GetFile=MidB(BdataStr,DataStart,DataLng)
EndFunction
前往文件的范例
PublicFunctionGetFileType(FieldName)
DimL1,DataStart,DataLng
L1=InStrB(BdataStr,GetBinary("name="+Chr(34)+FieldName+Chr(34)))
DataStart=InStrB(L1,BdataStr,GetBinary("Content-Type:"))+13
DataLng=InStrB(DataStart,BdataStr,ChrB(13)+ChrB(10)+ChrB(13)+ChrB(10))-DataStart
GetFileType=GetText(MidB(BdataStr,DataStart,DataLng))
EndFunction
前往文件的原始路径
PublicFunctionGetFilePath(FieldName)
DimL1,DataStart,DataLng
L1=InStrB(BdataStr,GetBinary("name="+Chr(34)+FieldName+Chr(34)))
DataStart=InStrB(L1,BdataStr,GetBinary("filename="))+9
DataLng=InStrB(DataStart,BdataStr,ChrB(13)+ChrB(10))-DataStart
GetFilePath=GetText(MidB(BdataStr,DataStart+1,DataLng-2))往失落最右边和最右侧的双引号,不晓得为何右侧的双引号要减往2
EndFunction
前往原始文件的后缀名
FunctionGetExtendName(FieldName)
FileName=GetFilePath(FieldName)
IfisNull(FileName)orFileName=""Then
GetExtendName=""
ExitFunction
EndIf
GetExtendName=Mid(FileName,InStrRev(FileName,"."))
EndFunction
前往file型表单域的值(二进制)
PublicFunctionGetFileSize(FieldName)
DimL1,DataStart,DataLng
L1=InStrB(BdataStr,GetBinary("name="+Chr(34)+FieldName+Chr(34)))
DataStart=InStrB(L1,BdataStr,ChrB(13)+ChrB(10)+ChrB(13)+ChrB(10))+4
DataLng=InStrB(DataStart,BdataStr,SeparationStr)-DataStart-2
GetFileSize=DataLng
EndFunction
从二进制字符串里掏出表单域的值(字符串)
PublicFunctionRetFieldText(FieldName)
DimL1,DataStart,DataLng
L1=InStrB(BdataStr,GetBinary("name="+Chr(34)+FieldName+Chr(34)))
DataStart=InStrB(L1,BdataStr,ChrB(13)+ChrB(10)+ChrB(13)+ChrB(10))+4
DataLng=InStrB(DataStart,BdataStr,SeparationStr)-DataStart-2
RetFieldText=GetText(MidB(BdataStr,DataStart,DataLng))
EndFunction
前往一个工夫和随机数毗连后的字符串,用于构建文件名
FunctiongetrandStr()
DimRanNum
Randomize
RanNum=Int(90000*rnd)+10000
getrandStr=Year(now)&Month(now)&Day(now)&Hour(now)&Minute(now)&Second(now)&RanNum
EndFunction
将二进制外码系列转换成vb字符串
PrivateFunctionGetText(Str1r)
Dims,t,t1,i
s="":t="":t1=""
Fori=1ToLenB(str1r)
t=AscB(MidB(Str1r,i,1))按字节掏出外码
ifnot(t>127)Then字节高位为0,暗示英笔墨符
s=s+Chr(t)
Else
i=i+1当为汉字时,取第二个字节
t1=AscB(MidB(Str1r,i,1))
s=s+Chr(t*256+t1)将汉字两字节外码组分解ANSI码
EndIf
&n
asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了! ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 掌握asp的特性而且一定要知道为什么。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习 掌握asp的特性而且一定要知道为什么。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
页:
[1]