仓酷云

标题: ASP教程之纯asp分别FORM数据中的二进制文件和文本... [打印本页]

作者: 柔情似水    时间: 2015-1-16 23:09
标题: ASP教程之纯asp分别FORM数据中的二进制文件和文本...
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。二进制|数据以下源代码为一个文件

<%

playxp,Email:playxp@sohu.com有成绩请与我接洽
功效:纯asp分别FORM数据中的二进制文件和文本数据(撑持中文)。
利用办法:将此文件包括在处置form的asp文件中,利用GetValue(name)来读取表单中各个元素的值。
注重:必定不要利用request.form来读取数据。
在尽年夜数的撑持asp的主页空间仅能利用无限的组件,不克不及利用上传组件,而内置的Request工具又不
撑持读取二进制文件,因而利用该文件能够办理上传文件坚苦的弊端,但在功能上却年夜打扣头。本程序参考了网上的一些代码。

由GBK向UNICODE转换
FunctionGBToU(BinStr,byteNum)
GBToU=""
Forj=1TobyteNum
gbcode1=AscB(MidB(BinStr,j,1))
Ifgbcode1>&H80Then
gbcode2=AscB(MidB(BinStr,j+1,1))
a=gbcode1-&H81
b=gbcode2-&H40
Ifgbcode2>&H7fThenb=b-1
GBToU=GBToU&ChrW(GB2U(a*190+b))GB2U为转换表
j=j+1
Else
GBToU=GBToU&ChrW(AscB(MidB(BinStr,j,1)))
EndIf
Next
EndFunction

失掉界限字符串
boundary=Mid(Request.ServerVariables("CONTENT_TYPE"),31)
Form中数据的字节数
byteCount=Request.TotalBytes
Form中的二进制数据
binRead=Request.BinaryRead(byteCount)
界限ASCII字符串
endStr=ChrB(13)&ChrB(10)&ChrB(45)&ChrB(45)
Fori=1ToLen(boundary)
endStr=endStr&ChrB(AscB(Mid(boundary,i,1)))
Next

DimFormValue(31,3)
DimbyteI字节指针
E=0
byteI=37+Len(boundary)第一个元素数据入手下手处
DoWhilebyteI<byteCount
IfAscB(MidB(binRead,byteI,1))=110Then元素数据存在
FormValue(E,0)=""
FormValue(E,1)=""
FormValue(E,2)=""
FormValue(E,3)=""
byteI=byteI+6名字入手下手处
nameStart=byteI
byteI=InStrB(byteI,binRead,ChrB(34))名字停止处
nameLen=byteI-nameStart名字长度
FormValue(E,0)=GBToU(MidB(binRead,nameStart,nameLen),nameLen)读进名字
IfAscB(MidB(binRead,byteI+1,1))=13Then元素为文本
byteI=byteI+5文本数据入手下手处
dataStart=byteI
byteI=InStrB(byteI,binRead,endStr)文本数据停止处
dataLen=byteI-dataStart文本数据长度
FormValue(E,1)=GBToU(MidB(binRead,dataStart,dataLen),dataLen)读进文本数据
Else元素为文件
byteI=byteI+13路径入手下手处
pathStart=byteI
byteI=InStrB(byteI,binRead,ChrB(34))路径停止处
pathLen=byteI-pathStart
FormValue(E,2)=GBToU(MidB(binRead,pathStart,pathLen),pathLen)读进路径
byteI=byteI+17文件范例入手下手
typeStart=byteI
byteI=InStrB(byteI,binRead,ChrB(13))文件范例停止处
typeLen=byteI-typeStart文件范例长度
FormValue(E,3)=GBToU(MidB(binRead,typeStart,typeLen),typeLen)读进文件范例
byteI=byteI+4文件数据入手下手处
dataStart=byteI
byteI=InStrB(byteI,binRead,endStr)文件数据停止处
dataLen=byteI-dataStart文件数据长度
FormValue(E,1)=MidB(binRead,dataStart,dataLen)读进文件数据
EndIf
byteI=byteI+38+Len(boundary)移向下一元素数据入手下手处
E=E+1
Else
ExitDo
EndIf
Loop

依据元素名来检索元素数据
假如表单位素为文本数据间接前往其值
假如表单位素为二进制数据文件,则前往一3元素数组,第一个元素为文件的二进制数据,
第二个元素为文件的路径,第三个为文件的范例。
FunctionGetValue(name)
Fori=0To31
IfStrComp(FormValue(i,0),name,1)=0Then
IfFormValue(i,3)=""Then
GetValue=FormValue(i,1)
Else
GetValue=Array(FormValue(i,1),FormValue(i,2),FormValue(i,3))
EndIf
ExitFunction
EndIf
Next
GetValue=Null
EndFunction
%>


</p>ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。
作者: 变相怪杰    时间: 2015-1-20 07:43
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
作者: 只想知道    时间: 2015-1-29 05:04
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
作者: 透明    时间: 2015-1-30 19:28
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
作者: 再现理想    时间: 2015-2-6 15:19
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
作者: 兰色精灵    时间: 2015-2-16 20:51
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
作者: 蒙在股里    时间: 2015-3-5 09:35
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
作者: 精灵巫婆    时间: 2015-3-12 02:58
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
作者: 小魔女    时间: 2015-3-19 17:43
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2