ASP网页编程之asp无组件上传类
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了上传|无组件----------------------------------------------------------------------转发时请保存此声明信息,这段声明其实不会影响你的速率!
*******************无组件上传类********************************
最初修正者:塞北的雪
blog:http://blog.csdn.net
电子邮件:northsnow@163.com
声明:此代码是在梁无惧代码基本上修正的,没有变动代码内核,只是增添了一个属性smallFileName
之以是发这篇文章,是想告知人人,在利用妙手一写好的代码的时分,不要仅范围于他人供应的现有的功效,
而应当在别人供应的已有的功效的基本上,依据本人的需求举行扩改。以到达本人最中意的需求。
修正者:梁无惧
电子邮件:yjlrb@21cn.com
网站:http://www.25cn.com
原作者:稻喷鼻老农
原作者网站:http://www.5xsoft.com
声明:此上传类是在化境编程界公布的无组件上传类的基本上修正的.
在与化境编程界无组件上传类比拟,速率快了快要50倍,当上传4M巨细的文件时
服务器只必要10秒就能够处置完,是今朝最快的无组件上传程序,以后版本为0.96
源代码公然,无偿使用,关于贸易用处,请与作者接洽
文件属性:比方上传文件为c:myfiledoc.txt
FileName文件名字符串"doc.txt"
FileSize文件巨细数值1210
FileType文件范例字符串"text/plain"
FileExt文件扩大名字符串"txt"
smallFileName往失落了扩大名的文件名"doc"
FilePath文件原路径字符串"c:myfile"
利用时注重事项:
因为Scripting.Dictionary辨别巨细写,以是在网页及ASP页的项目名都要不异的巨细
写,假如人习气用年夜写或小写,为了避免堕落的话,能够把
sFormName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
改成
(小写者)sFormName=LCase(Mid(sinfo,iFindStart,iFindEnd-iFindStart))
(年夜写者)sFormName=UCase(Mid(sinfo,iFindStart,iFindEnd-iFindStart))
**********************************************************************
----------------------------------------------------------------------
dimoUpFileStream
Classupload_file
dimForm,File
PrivateSubClass_Initialize
界说变量
dimRequestBinDate,sStart,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
dimiFileSize,sFilePath,sFileType,sFormvalue,sFileName
dimiFindStart,iFindEnd
dimiFormStart,iFormEnd,sFormName
代码入手下手
setForm=Server.CreateObject("Scripting.Dictionary")
setFile=Server.CreateObject("Scripting.Dictionary")
ifRequest.TotalBytes<1thenExitSub
settStream=Server.CreateObject("adodb.stream")
setoUpFileStream=Server.CreateObject("adodb.stream")
oUpFileStream.Type=1
oUpFileStream.Mode=3
oUpFileStream.Open
oUpFileStream.WriteRequest.BinaryRead(Request.TotalBytes)
oUpFileStream.Position=0
RequestBinDate=oUpFileStream.Read
iFormEnd=oUpFileStream.Size
bCrLf=chrB(13)&chrB(10)
获得每一个项目之间的分开符
sStart=MidB(RequestBinDate,1,InStrB(1,RequestBinDate,bCrLf)-1)
iStart=LenB(sStart)
iFormStart=iStart+2
分化项目
Do
iInfoEnd=InStrB(iFormStart,RequestBinDate,bCrLf&bCrLf)+3
tStream.Type=1
tStream.Mode=3
tStream.Open
oUpFileStream.Position=iFormStart
oUpFileStream.CopyTotStream,iInfoEnd-iFormStart
tStream.Position=0
tStream.Type=2
tStream.Charset="gb2312"
sInfo=tStream.ReadText
获得表单项目称号
iFormStart=InStrB(iInfoEnd,RequestBinDate,sStart)-1
iFindStart=InStr(22,sInfo,"name=""",1)+6
iFindEnd=InStr(iFindStart,sInfo,"""",1)
sFormName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
假如是文件
ifInStr(45,sInfo,"filename=""",1)>0then
setoFileInfo=newFileInfo
获得文件属性
iFindStart=InStr(iFindEnd,sInfo,"filename=""",1)+10
iFindEnd=InStr(iFindStart,sInfo,"""",1)
sFileName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
oFileInfo.FileName=GetFileName(sFileName)
oFileInfo.FilePath=GetFilePath(sFileName)
oFileInfo.FileExt=GetFileExt(sFileName)----刘金才修正
oFileInfo.FileExt=GetFileExt(oFileInfo.FileName)----刘金才增加
oFileInfo.smallFileName=getSmallFileName(oFileInfo.FileName)----刘金才增加
iFindStart=InStr(iFindEnd,sInfo,"Content-Type:",1)+14
iFindEnd=InStr(iFindStart,sInfo,vbCr)
oFileInfo.FileType=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
oFileInfo.FileStart=iInfoEnd
oFileInfo.FileSize=iFormStart-iInfoEnd-2
oFileInfo.FormName=sFormName
file.addsFormName,oFileInfo
else
假如是表单项目
tStream.Close
tStream.Type=1
tStream.Mode=3
tStream.Open
oUpFileStream.Position=iInfoEnd
oUpFileStream.CopyTotStream,iFormStart-iInfoEnd-2
tStream.Position=0
tStream.Type=2
tStream.Charset="gb2312"
sFormvalue=tStream.ReadText
form.AddsFormName,sFormvalue
endif
tStream.Close
iFormStart=iFormStart+iStart+2
假如到文件尾了就加入
loopuntil(iFormStart+2)=iFormEnd
RequestBinDate=""
settStream=nothing
EndSub
PrivateSubClass_Terminate
扫除变量及对像
ifnotRequest.TotalBytes<1then
oUpFileStream.Close
setoUpFileStream=nothing
endif
Form.RemoveAll
File.RemoveAll
setForm=nothing
setFile=nothing
EndSub
获得文件路径
PrivatefunctionGetFilePath(FullPath)
IfFullPath""Then
GetFilePath=left(FullPath,InStrRev(FullPath,""))
Else
GetFilePath=""
EndIf
Endfunction
获得文件全名
PrivatefunctionGetFileName(FullPath)
IfFullPath""Then
GetFileName=mid(FullPath,InStrRev(FullPath,"")+1)
Else
GetFileName=""
EndIf
Endfunction
获得扩大名
PrivatefunctionGetFileExt(FileName)
IfFileName""Then
ifinstr(FileName,".")>0then
GetFileExt=mid(FileName,InStrRev(FileName,".")+1)
else
GetFileExt=""
endif
Else
GetFileExt=""
EndIf
Endfunction
获得往失落了扩大名的文件名刘金才增加
PrivatefunctionGetSmallFileName(FileName)
IfFileName""Then
ifinstr(FileName,".")>0then
GetSmallFileName=mid(FileName,1,InStrRev(FileName,".")-1)
else
GetSmallFileName=FileName
endif
Else
GetSmallFileName=""
EndIf
Endfunction
EndClass
文件属性类
新增加一个smallFileName暗示往失落了扩大名的文件名刘金才增加
ClassFileInfo
dimFormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt,smallFileName
PrivateSubClass_Initialize
FileName=""
smallFileName=""
FilePath=""
FileSize=0
FileStart=0
FormName=""
FileType=""
FileExt=""
EndSub
保留文件办法
PublicfunctionSaveToFile(FullPath)
dimoFileStream,ErrorChar,i
SaveToFile=1
iftrim(fullpath)=""orright(fullpath,1)="/"thenexitfunction
setoFileStream=CreateObject("Adodb.Stream")
oFileStream.Type=1
oFileStream.Mode=3
oFileStream.Open
oUpFileStream.position=FileStart
oUpFileStream.copytooFileStream,FileSize
oFileStream.SaveToFileFullPath,2
oFileStream.Close
setoFileStream=nothing
SaveToFile=0
endfunction
EndClass
对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了, 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 掌握asp的特性而且一定要知道为什么。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页:
[1]