可以放在服务器上,对服务器上的文件进行浏览、上传、下载,可下载文件源码。
把下所有代码入在一个文件里即可,文件的后缀要为asp。
复制代码 代码如下:
<%
thedir=request("thedir")
ifthedir=""then
folderini=server.mappath(".")&""
else
folderini=server.mappath(thedir)&""
endif
foldinfo=trim(Request.Querystring("foldinfo"))
iffoldinfo=""then
foldinfo=folderini
endif
classclsUp
DimForm,File
DimAllowExt_
DimNoAllowExt_
PrivateoUpFileStream
PrivateisErr_
PrivateErrMessage_
PrivateisGetData_
PublicPropertyGetVersion
Version="v1.0.0"
EndProperty
PublicPropertyGetisErr
isErr=isErr_
EndProperty
PublicPropertyGetErrMessage
ErrMessage=ErrMessage_
EndProperty
PublicPropertyGetAllowExt
AllowExt=AllowExt_
EndProperty
PublicPropertyLetAllowExt(Value)
AllowExt_=LCase(Value)
EndProperty
PublicPropertyGetNoAllowExt
NoAllowExt=NoAllowExt_
EndProperty
PublicPropertyLetNoAllowExt(Value)
NoAllowExt_=LCase(Value)
EndProperty
PrivateSubClass_Initialize
isErr_=0
NoAllowExt=""
NoAllowExt=LCase(NoAllowExt)
AllowExt=""
AllowExt=LCase(AllowExt)
isGetData_=false
EndSub
PrivateSubClass_Terminate
onerrorResumeNext
Form.RemoveAll
SetForm=Nothing
File.RemoveAll
SetFile=Nothing
oUpFileStream.Close
SetoUpFileStream=Nothing
EndSub
PublicSubGetData(MaxSize)
onerrorResumeNext
ifisGetData_=falsethen
Dimgetupdata1,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
DimsFormValue,sFileName
DimiFindStart,iFindEnd
DimiFormStart,iFormEnd,sFormName
IfRequest.TotalBytes<1Then
isErr_=1
ErrMessage_=""
ExitSub
EndIf
IfMaxSize>0Then
IfRequest.TotalBytes>MaxSizeThen
isErr_=2
ErrMessage_=""
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
getupdata1=oUpFileStream.Read
iFormEnd=oUpFileStream.Size
bCrLf=ChrB(13)&ChrB(10)
sSpace=MidB(getupdata1,1,InStrB(1,getupdata1,bCrLf)-1)
iStart=LenB(sSpace)
iFormStart=iStart+2
Do
iInfoEnd=InStrB(iFormStart,getupdata1,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,getupdata1,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=newclsFileInfo
iFindStart=InStr(iFindEnd,sInfo,"filename=""",1)+10
iFindEnd=InStr(iFindStart,sInfo,""""&vbCrLf,1)
sFileName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
oFileInfo.FileName=GetFileName(sFileName)
oFileInfo.FilePath=GetFilePath(sFileName)
oFileInfo.FileExt=GetFileExt(sFileName)
iFindStart=InStr(iFindEnd,sInfo,"Content-Type:",1)+14
iFindEnd=InStr(iFindStart,sInfo,vbCr)
oFileInfo.FileMIME=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
getupdata1=""
SettStream=Nothing
isGetData_=true
endif
EndSub
PublicFunctionSaveToFile(Item,Path)
SaveToFile=SaveToFileEx(Item,Path,True)
EndFunction
PublicFunctionAutoSave(Item,Path)
AutoSave=SaveToFileEx(Item,Path,false)
EndFunction
PrivateFunctionSaveToFileEx(Item,Path,Over)
OnErrorResumeNext
DimoFileStream
DimtmpPath
Dimnohack
isErr=0
SetoFileStream=CreateObject("ADODB.Stream")
oFileStream.Type=1
oFileStream.Mode=3
oFileStream.Open
oUpFileStream.Position=File(Item).FileStart
oUpFileStream.CopyTooFileStream,File(Item).FileSize
nohack=split(path,".")
tmpPath=nohack(0)&"."&nohack(ubound(nohack))
ifOverthen
ifisAllowExt(GetFileExt(tmpPath))then
oFileStream.SaveToFiletmpPath,2
Else
isErr_=3
ErrMessage_="!"
Endif
Else
Path=GetFilePath(Path)
ifisAllowExt(File(Item).FileExt)then
do
Err.Clear()
nohack=split(Path&GetNewFileName()&"."&File(Item).FileExt,".")
tmpPath=nohack(0)&"."&nohack(ubound(nohack))
oFileStream.SaveToFiletmpPath
loopUntilErr.number<1
oFileStream.SaveToFilePath
Else
isErr_=3
ErrMessage_="该后缀名的文件不允许上传!"
Endif
Endif
oFileStream.Close
SetoFileStream=Nothing
ifisErr_=3thenSaveToFileEx=""elseSaveToFileEx=GetFileName(tmpPath)
EndFunction
'取得文件数据
PublicFunctionFileData(Item)
isErr_=0
ifisAllowExt(File(Item).FileExt)then
oUpFileStream.Position=File(Item).FileStart
FileData=oUpFileStream.Read(File(Item).FileSize)
Else
isErr_=3
ErrMessage_=""
FileData=""
Endif
EndFunction
PublicfunctionGetFilePath(FullPath)
IfFullPath<>""Then
GetFilePath=Left(FullPath,InStrRev(FullPath,""))
Else
GetFilePath=""
EndIf
Endfunction
PublicFunctionGetFileName(FullPath)
IfFullPath<>""Then
GetFileName=mid(FullPath,InStrRev(FullPath,"")+1)
Else
GetFileName=""
EndIf
Endfunction
PublicFunctionGetFileExt(FullPath)
IfFullPath<>""Then
GetFileExt=LCase(Mid(FullPath,InStrRev(FullPath,".")+1))
Else
GetFileExt=""
EndIf
Endfunction
PublicFunctionGetNewFileName()
dimranNum
dimdtNow
dtNow=Now()
ranNum=int(90000*rnd)+10000
GetNewFileName=year(dtNow)&right("0"&month(dtNow),2)&right("0"&day(dtNow),2)&right("0"&hour(dtNow),2)&right("0"&minute(dtNow),2)&right("0"&second(dtNow),2)&ranNum
EndFunction
PublicFunctionisAllowExt(Ext)
ifNoAllowExt=""then
isAllowExt=cbool(InStr(1,";"&AllowExt&";",LCase(";"&Ext&";")))
else
isAllowExt=notCBool(InStr(1,";"&NoAllowExt&";",LCase(";"&Ext&";")))
endif
EndFunction
EndClass
ClassclsFileInfo
DimFormName,FileName,FilePath,FileSize,FileMIME,FileStart,FileExt
EndClass
%>
<%
functiondeletefile(filename)
setobjfilesys=server.createobject("scripting.filesystemobject")
ss=filename
ss=foldinfo&ss
ifobjfilesys.FILEExists(ss)then
objfilesys.deleteFILEss
endif
endfunction
functiondeletedir(dirname)
setobjfilesys=server.createobject("scripting.filesystemobject")
ss=dirname&idd
ss=server.mappath(ss)
ifobjfilesys.FOLDERExists(ss)then
objfilesys.deleteFOLDERss
endif
endfunction
functiondownload(filename)
Response.Buffer=true
Response.Clear
dimurl
Dimfso,fl,flsize
dimDname
DimobjStream,ContentType,flName,isre,url1
Dname=filename
IfDname<>""Then
url=foldinfo&Dname
EndIf
Setfso=Server.CreateObject("Scripting.FileSystemObject")
Setfl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Setfl=Nothing
Setfso=Nothing
SetobjStream=Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type=1
objStream.LoadFromFileurl
ContentType="text/html"
Response.AddHeader"Content-Disposition","attachment;filename="&flName
Response.AddHeader"Content-Length",flsize
Response.Charset="UTF-8"
Response.ContentType=ContentType
Response.BinaryWriteobjStream.Read
Response.Flush
response.Clear()
objStream.Close
SetobjStream=Nothing
endfunction
functionuploadfiles()
filepath=foldinfo
setupload=newclsUp
upload.NoAllowExt="aep"
upload.GetData(3072000)
ifupload.form("act")="uploadfile"then
foreachformNameinupload.File
setfile=upload.File(formName)
randomize
filename1=file.FileName
filename=filepath&filename1
iffile.FileSize>0then
upload.SaveToFileformName,FileName
endif
setfile=nothing
next
setupload=nothing
endif
endfunction
action=request("action")
ifaction="deletefile"then
filename=request("filename")
deletefile(filename)
endif
ifaction="deletedir"then
deletedirname=request("deletedir")
deletedir(deletedirname)
endif
ifaction="download"then
filename=request("filename")
download(filename)
endif
ifaction="uploadfiles"then
uploadfiles()
endif
%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body>
<table>
<tr>
<td><font>当前目录:</font><fontcolor="#FF7120"><%=foldinfo%></font>
<formname="form1"method="post"action="?foldinfo=<%=foldinfo%>&action=uploadfiles"enctype="multipart/form-data">
<inputtype="hidden"name="act"value="uploadfile">
<inputtype="file"name="file1""class="tx1"value="">
<inputtype="submit"name="Submit"value="上传"class="button">
</form>
</td>
</tr>
<tr>
<td>
<hrsize="1">
</td>
</tr>
<tr>
<td>
<tablewidth="750"border="0"cellspacing="1"cellpadding="1">
<trbgcolor="#00CC00">
<tdwidth="300">Folder</td>
<tdwidth="180">Size</td>
<tdwidth="200">LastTime</td>
<tdwidth="100">Operate</td>
</tr>
</table>
</td>
</tr>
<tr>
<tdalign="right">
<%
upfolder=left(foldinfo,len(foldinfo)-1)
upfolder=left(upfolder,InstrRev(upfolder,""))
iffoldinfo<>folderinithen
response.write("<ahref='?foldinfo="&upfolder&"'>GoBack</a>")
else
response.write("GoBack")
endif%>
</td>
</tr>
<tr>
<td>
<%ShowFolderList(foldinfo)%>
</td>
</tr>
<tr>
<td>
<tablewidth="750"border="0"cellspacing="1"cellpadding="1">
<trbgcolor="#009999">
<tdwidth="300">File</td>
<tdwidth="180">Size</td>
<tdwidth="200">LastTime</td>
<tdwidth="100">Operate</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<%showfolderinfo(foldinfo)%>
</td>
</tr>
<tr>
<td></td>
</tr>
</table>
<%
SubShowFolderList(folderspec)
Dimfs,f,f1,fc,s,schild,p,fsize
Setfs=CreateObject("scripting.FileSystemObject")
Setf=fs.GetFolder(folderspec)
Setfc=f.SubFolders
ForEachf1infc
s=f1.name
's=s&vbCrLf
p=f1.DateLastModified
fsize=f1.Size
schild=folderspec&s&""
Response.write("<tablewidth='750'border='0'cellspacing='1'cellpadding='1'>")
Response.write("<tr>")
Response.write("<tdwidth='300'bgcolor='#ECFFD9'><fontface='Wingdings'fontsize='3pt'>0</font><ahref='?foldinfo="&schild&"'>"&s&"</a></td>")
Response.write("<tdwidth='180'bgcolor='#ECFFD9'>"&fsize&"</td>")
Response.write("<tdwidth='200'bgcolor='#ECFFD9'>"&p&"</td>")
Response.write("<tdwidth='100'bgcolor='#ECFFD9'>")
Response.write("<ahref=?foldinfo="&foldinfo&"&action=deletedir&deletedir="&s&">DEL</a>")
Response.write("</td>")
Response.write("</tr>")
Response.write("</table>")
Next
EndSub
Subshowfolderinfo(folderspc)
setMyFileObject=Server.CreateObject("scripting.FileSystemObject")
SetMyFolder=MyFileObject.GetFolder(folderspc)
foreachthinginMyFolder.Files
Setafile=MyFileObject.GetFile(thing)
filenamecode=afile.name
filedetail=folderspc+filenamecode
filedetail=replace(filedetail,"","*s_p_l_i_t*")
filesize=afile.size
lastmodify=afile.DateLastModified
Response.write("<tablewidth='750'border='0'cellspacing='1'cellpadding='1'>")
Response.write("<tr>")
Response.write("<tdwidth='300'bgcolor='#f4f4ff'><fontface='Wingdings'fontsize='3pt'>2</font>"&filenamecode&"</td>")
Response.write("<tdwidth='180'bgcolor='#f4f4ff'>"&filesize&"</td>")
Response.write("<tdwidth='200'bgcolor='#f4f4ff'>"&lastmodify&"</td>")
Response.write("<tdwidth='100'bgcolor='#f4f4ff'>")
Response.write("<ahref=?foldinfo="&foldinfo&"&action=deletefile&filename="&filenamecode&">DEL</a>")
Response.write("<ahref=?foldinfo="&foldinfo&"&action=download&filename="&filenamecode&">DL</a>")
Response.write("</td>")
Response.write("</tr>")
Response.write("</table>")
Next
Endsub
%>
</body>
</html>