对于已经上传的文件,随着时间的漫长,内容的更替,这些上传文件就需要管理了。最常见的,则是对于一些上传文件的删除。那么,在线的文件删除则是通过FSO来实现。同时,在文件删除之前必须确定删除某个具体的文件或文件夹,这就需要能查看到所有的上传文件内容。 下面的这些内容是摘录在某BLOG现成内容,主要是提取精华方便自己的使用,也与大家共享。
在FSO浏览上传文件时需要到一些功能,这些功能已自定义为函数以公用,该文件内容如下,拷贝代码,保存为function.asp <% function getPathList(pathName) '获得路径的文件信息 dim FSO,ServerFolder,getInfo,getInfos,tempS getInfo="" Set FSO=Server.CreateObject("Scripting.FileSystemObject") Set ServerFolder=FSO.GetFolder(Server.MapPath(pathName)) Dim ServerFolderList,ServerFolderEvery Set ServerFolderList=ServerFolder.SubFolders tempS="" For Each ServerFolderEvery IN ServerFolderList getInfo=getInfo&tempS&ServerFolderEvery.Name tempS="*" Next getInfo=getInfo&"|" Dim ServerFileList,ServerFileEvery Set ServerFileList=ServerFolder.Files tempS="" For Each ServerFileEvery IN ServerFileList getInfo=getInfo&tempS&ServerFileEvery.Name tempS="*" Next Set FSO=Nothing getInfos=split(getInfo,"|") getPathList=getInfos end function function getFileInfo(FileName) '获取文件信息 dim FSO,File,FileInfo(3) Set FSO=Server.CreateObject("Scripting.FileSystemObject") if FSO.FileExists(Server.MapPath(FileName)) then Set File=FSO.GetFile(Server.MapPath(FileName)) FileInfo(0)=File.Size if FileInfo(0)/1000>1 then FileInfo(0)=int(FileInfo(0)/1000)&" KB" else FileInfo(0)=FileInfo(0)&" Bytes" end if FileInfo(1)=lcase(right(FileName,4)) FileInfo(2)=File.DateCreated FileInfo(3)=File.Type end if getFileInfo=FileInfo Set FSO=Nothing end function function bc(t,s) dim tl,sl,i bc=false sl=len(s) tl=len(t) if tl< sl then bc=true:exit function for i=1 to sl if mid(t,i,1)<>mid(s,i,1) then bc=true:exit function next end function %> 要管理文件就必须先查看到这些上传的文件,该文件内容如下,拷贝代码,保存为showf.asp <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <!--#include file="function.asp" --> <script> function checkAll(){ for (i=0;i<document.forms[0].length;i++){ if (document.forms[0][i].tagName=="INPUT"){ if (document.forms[0][i].type=="checkbox") {document.forms[0][i].checked="checked"} } } } </script> <form action="delf.asp" method="post" onsubmit="if (confirm('是否删除选择的文件或文件夹')) {return true} else {return false}"> <input type="hidden" name="whatdo" value="DelFiles"/> <% AttPath=Request.QueryString("AttPath") if len(AttPath)<1 then AttPath="uploadfile" elseif bc(server.mapPath(AttPath),server.mapPath("uploadfile")) then AttPath="uploadfile" end If ArrFolders=split(getPathList(AttPath)(0),"*") Arrfiles=split(getPathList(AttPath)(1),"*") response.write (AttPath&"<br>") if AttPath<>"uploadfile" then arrUpFolders=split(AttPath,"/") for i=0 to ubound(arrUpFolders)-1 arrUpFolder=arrUpFolder&TempF&arrUpFolders(i) TempF="/" next end if if len(arrUpFolder)>0 then response.write "------<a href=""?AttPath="&arrUpFolder&""">返回上级目录</a><br>" end if for each ArrFolder in ArrFolders response.write "<input name=""folders"" type=""checkbox"" value="""&AttPath&"/"&ArrFolder&"""/> [文件夹]<a href=""?AttPath="&AttPath&"/"&ArrFolder&""">"&ArrFolder&"</a><br>" next for each Arrfile in Arrfiles response.write "<input name=""Files"" type=""checkbox"" value="""&AttPath&"/"&Arrfile&"""/> <a href="""&AttPath&"/"&Arrfile&""" target=""_blank"">"&Arrfile&"</a> "&getFileInfo(AttPath&"/"&Arrfile)(0)&" | "&getFileInfo(AttPath&"/"&Arrfile)(2)&" | "&getFileInfo(AttPath&"/"&Arrfile)(3)&"<br>" next %> <input type="button" value="全选" onclick="checkAll()"/> <input type="submit" name="Submit" value="删除所选的文件或文件夹"/> </form> 在确认选择某文件或某文件夹删除后,action="delf.asp" ,将跳转到具体的删除文件的功能页,该文件内容如下,拷贝代码,保存为delf.asp<!--#include file="function.asp" --> <% if Request.form("whatdo")="DelFiles" then dim getFolders,getFiles,getFolder,getFile,getFolderCount,getFileCount Dim FSODel Set FSODel=Server.CreateObject("Scripting.FileSystemObject") getFolders=split(Request.form("folders"),", ") getFiles=split(Request.form("Files"),", ") getFolderCount=0 getFileCount=0 for each getFolder in getFolders if len(getPathList(getFolder)(1))>0 then response.write getFolder&"文件夹内含有文件,无法删除!<a href=# onclick=history.go(-1)>返回</a>" response.end end if if FSODel.FolderExists(Server.MapPath(getFolder)) then FSODel.DeleteFolder Server.MapPath(getFolder),true getFolderCount=getFolderCount+1 end if next for each getFile in getFiles if FSODel.FileExists(Server.MapPath(getFile)) then FSODel.DeleteFile Server.MapPath(getFile),true getFileCount=getFileCount+1 end if next response.write ("有 "&getFileCount&" 文件, "&getFolderCount&" 个文件夹被删除!") response.write ("<a href=showf.asp>返回</a>") end if %> |