百度地图 所有文章 文章列表
首页 > Asp编程 > 深入学习ASP动态网页技术之对文件系统的管理
深入学习ASP动态网页技术之对文件系统的管理
发布日期:2009/5/8
 

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

Related Information