|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。 |
|