ASP网站制作之蛙蛙保举:蛙蛙牌无组件上传类
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;上传|无组件|上传|无组件<%
当表单里既有文本域又有文件域的时分,我们必需把表单的编码范例设置成"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=</p>ASP最大的缺点在于网络的安全性和可靠性,企业将经营数据放在开放的平台上,最大的担忧就是如何保证这些数据不被其他人破坏。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 那么,ASP.Net有哪些改进呢? 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
页:
[1]