对于已经上传的文件,随着时间的漫长,内容的更替,这些上传文件就需要管理了。最常见的,则是对于一些上传文件的删除。那么,在线的文件删除则是通过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
&n