asp实现上传功能的源码演示简单易懂.docx

上传人:b****8 文档编号:9167070 上传时间:2023-05-17 格式:DOCX 页数:13 大小:18.26KB
下载 相关 举报
asp实现上传功能的源码演示简单易懂.docx_第1页
第1页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第2页
第2页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第3页
第3页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第4页
第4页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第5页
第5页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第6页
第6页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第7页
第7页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第8页
第8页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第9页
第9页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第10页
第10页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第11页
第11页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第12页
第12页 / 共13页
asp实现上传功能的源码演示简单易懂.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

asp实现上传功能的源码演示简单易懂.docx

《asp实现上传功能的源码演示简单易懂.docx》由会员分享,可在线阅读,更多相关《asp实现上传功能的源码演示简单易懂.docx(13页珍藏版)》请在冰点文库上搜索。

asp实现上传功能的源码演示简单易懂.docx

asp实现上传功能的源码演示简单易懂

asp无组件上传图片的源码分析及下载

要实现图片的上传功能其实非常简单,只需要四个文件与一个文件夹即可实现。

第一个文件:

Upload.asp这个文件的源代码如下:

2px"ID="UploadFiles"src="upload_Photo.asp?

PhotoUrlID=1"frameborder=0scrolling=nowidth="300"height="325">

说明:

这个文件将引用一个名为upload_Photo.asp的文件也就是下面要讲的第二个文件作为框架,同时这里传递一个PhotoUrlID参数给pload_Photo.asp这个文件的form1表单中的名为PhotoUrlID的隐藏域名,其值为1

第二个文件:

Upload_Photo.asp,这个文件的源代码如下:

--

BODY{

BACKGROUND-COLOR:

#E1F4EE;

font-size:

9pt

}

.tx1{height:

20px;font-size:

9pt;border:

1pxsolid;border-color:

#000000;color:

#0000FF}-->

functioncheck()

{

varstrFileName=document.form1.FileName.value;

if(strFileName=="")

alert("请选择要上传的文件");

document.form1.FileName.focus();

returnfalse;

{

}

}

1pxdoublergb(88,88,88);font:

9pt">

value="<%=Clng(trim(request("PhotoUrlID")))%>">

说明:

这个是作为第一个文件Upload.asp的框架文件,注意这里的FileName的文本框是用于接受上传成功之后图片的地址

第三个文件:

Upfile_Photo.asp,其源代码如下:

--#includefile="upfile_class.asp"-->

<%

constupload_type=0'上传方法:

0=无惧无组件上传类,1=FSO上传2=lyfupload,3=aspupload,4=chinaaspupload

dimupload,oFile,formName,SavePath,filename,fileExt,oFileSize

dimEnableUpload

dimarrUpFileType

dimranNum

dimmsg,FoundErr

dimPhotoUrlID

msg=""

FoundErr=false

EnableUpload=false

%>

--

BODY{

BACKGROUND-COLOR:

#E1F4EE;

}font-size:

9ptid="PhotoUrlID".tx1{

height:

20px;

font-size:

9pt;

border:

1pxsolid;

border-color:

#000000;

color:

#0000FF

}

-->

<%

ifEnableUploadFile="No"then

response.write"系统未开放文件上传功能"

else

selectcaseupload_type

case0

callupload_0()'使用化境无组件上传类

caseelse

'response.write"本系统未开放插件功能"

'response.end

endselect

endif

%>

<%

subupload_0()'使用化境无组件上传类

setupload=newupfile_class''建立上传对象

upload.GetData(104857600)'取得上传数据,限制最大上传100M

ifupload.err>0then'如果出错

selectcaseupload.err

case1

response.write"请先选择你要上传的文件!

"

case2

response.write"你上传的文件总大小超出了最大限制(200k)"endselect

response.end

endif

PhotoUrlID=Clng(trim(upload.form("PhotoUrlID")))

ifPhotoUrlID>0then

SavePath="UploadFiles"'存放上传文件的目录

else

SavePath="UploadFiles"'存放上传文件的目录

endif

ifright(SavePath,1)<>"/"thenSavePath=SavePath&"/"'在目录后加(/)

foreachformNameinupload.file'列出所有上传了的文件

setofile=upload.file(formName)'生成一个文件对象

oFileSize=ofile.filesize

ifoFileSize<100then

msg="请先选择你要上传的文件!

"

FoundErr=True

else

selectcasePhotoUrlID

case0

ifoFileSize>(MaxFileSize*1024)then

msg="文件大小超过了限制,最大只能上传"&CStr(MaxFileSize)&"K的文件!

"

FoundErr=true

endif

case1

ifoFileSize>(10000*1024)then

msg="文件大小超过了限制,最大只能上传10M的文件!

"

FoundErr=true

endif

endselect

endif

fileExt=lcase(ofile.FileExt)

arrUpFileType=split("gif|jpg|bmp|png|swf|doc|rar|xls","|")'如需添加其它类型的文档请fori=0toubound(arrUpFileType)

iffileEXT=trim(arrUpFileType(i))then

EnableUpload=true

exitfor

endif

在这里添加文档后缀名

next

iffileEXT="asp"orfileEXT="asa"orfileEXT="aspx"then

EnableUpload=false

endif

ifEnableUpload=falsethen

msg="这种文件类型不允许上传!

\n\n只允许上传这几种文件类型:

"&FoundErr=true

endif

strJS=""&vbcrlf

ifFoundErr<>truethen

randomize

ranNum=int(900*rnd)+100

"gif|jpg|bmp|png|swf|doc|rar|xls"

filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt

ofile.SaveToFileServer.mappath(FileName)'保存文件

response.write"文件上传成功!

文件大小为:

"&cstr(round(oFileSize/1024))&"K"

selectcasePhotoUrlID

case0

strJS=strJS&"parent.document.myform.PhotoSize1.value='"cstr(round(oFileSize/1024))&"';"&vbcrlf

case1

strJS=strJS&"parent.document.myform.DefaultPicUrl.value='"fileName&"';"&vbcrlf

endselect

else

strJS=strJS&"alert('"&msg&"');"&vbcrlf

strJS=strJS&"history.go(-1);"&vbcrlf

endif

strJS=strJS&""&vbcrlf

response.writestrJS

setfile=nothing

next

setupload=nothing

endsub

%>

第四个文件upfile_class.asp,源代码如下

<%

DimoUpFileStream

'----------------------------------------------------------------------

'文件上传类

ClassUpFile_Class

DimForm,File,Version,Err

PrivateSubClass_Initialize

Version="无惧上传类VersionV1.2"

Err=-1

EndSub

PrivateSubClass_Terminate

'清除变量及对像

IfErr<0Then

Form.RemoveAll

SetForm=Nothing&&File.RemoveAll

SetFile=Nothing

oUpFileStream.Close

SetoUpFileStream=Nothing

EndIf

EndSub

PublicSubGetData(MaxSize)

'定义变量

DimRequestBinData,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfoDimiFileSize,sFilePath,sFileType,sFormValue,sFileName

DimiFindStart,iFindEnd

DimiFormStart,iFormEnd,sFormName

'代码开始

IfRequest.TotalBytes<1Then'如果没有数据上传

Err=1

ExitSub

EndIf

IfMaxSize>0Then'如果限制大小

IfRequest.TotalBytes>MaxSizeThen

Err=2'如果上传的数据超出限制

ExitSub

EndIf

EndIf

SetForm=Server.CreateObject("Scripting.Dictionary")

Form.CompareMode=1

SetFile=Server.CreateObject("Scripting.Dictionary")

File.CompareMode=1

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

RequestBinData=oUpFileStream.Read

iFormEnd=oUpFileStream.Size

bCrLf=ChrB(13)&ChrB(10)

'取得每个项目之间的分隔符

sSpace=MidB(RequestBinData,1,InStrB(1,RequestBinData,bCrLf)-1)

iStart=LenB(sSpace)

iFormStart=iStart+2

'分解项目

Do

iInfoEnd=InStrB(iFormStart,RequestBinData,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,RequestBinData,sSpace)-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_Class

'取得文件属性

iFindStart=InStr(iFindEnd,sInfo,"filename=""",1)+10

iFindEnd=InStr(iFindStart,sInfo,"""",1)

sFileName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)

oFileInfo.FileName=Mid(sFileName,InStrRev(sFileName,"\")+1)

oFileInfo.FilePath=Left(sFileName,InStrRev(sFileName,"\"))

oFileInfo.FileExt=Mid(sFileName,InStrRev(sFileName,".")+1)

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

IfForm.Exists(sFormName)Then

Form(sFormName)=Form(sFormName)&","&sFormValue

else

form.AddsFormName,sFormValue

EndIf

EndIf

tStream.Close

iFormStart=iFormStart+iStart+2

'如果到文件尾了就退出

LoopUntil(iFormStart+2)>=iFormEnd

RequestBinData=""

SettStream=Nothing

EndSub

EndClass

'------------------------------------------------------------------------------

'文件属性类

ClassFileInfo_Class

DimFormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt

'保存文件方法

PublicFunctionSaveToFile(Path)

iflcase((right(Path,3))<>lcase(FileExt))then'经典的上传漏洞^_^

response.Write("alert('警告:

不允许上传这种文件!

');")

response.end

endif

OnErrorResumeNext

DimoFileStream

SetoFileStream=CreateObject("ADODB.Stream")

oFileStream.Type=1

oFileStream.Mode=3

oFileStream.Open

oUpFileStream.Position=FileStart

oUpFileStream.CopyTooFileStream,FileSize

oFileStream.SaveToFilePath,2

oFileStream.Close

SetoFileStream=Nothing

EndFunction

'取得文件数据

PublicFunctionFileData

oUpFileStream.Position=FileStart

FileData=oUpFileStream.Read(FileSize)

EndFunction

EndClass

%>

除了上面四个文件夹之外还需要一个名为UploadFiles的文件夹,注意以上的四个文件与文件夹都是放在网站根目录下,也就是同极目录下的,如果目录不同级,请修改路径,同时本程序不仅可以包括jpg,png,gif等类型的图片,还可以上传word、EXECL、记事本、RAR压缩包等,当然上传对大小是有限的,只限定在200K以内,如果超过200K将会出错.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2