广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    FSO操作文件系统

    2018-05-16 07:54:16 次阅读 稿源:互联网
    零七广告

    实现功能:
    文件(夹)目录列表 提供了查阅目录下面的文件和文件夹
    文件 写,创,删 提供了编辑,删除文件(文件夹)的操作
    创建文件夹/文件 针对创建文件夹(文件)而设置.
    上传文件 您可以模拟FTP上传,文件大小,类型不受限制. 

    有兴趣的自己体验,出现任何问题我均不承担任何后果,在此说,我没多少时间上网,经常也顾不过来,是看到最近经常有人问这方面的问题,就发上来,希望有所帮助。

    upfso.asp //控制上传的文件
    代码如下:

    <!--#include file="upload.asp" -->
    <%'On Error Resume Next%>
    <STYLE type="text/css"> @import url("admin.css");</STYLE>
    <%
    Server.ScriptTimeOut = 999
    'up_filetype="RAR,ZIP,SWF,JPG,PNG,GIF,DOC,TXT,CHM,PDF,ACE,JPG,MP3,WMA,WMV,bmp"
        IF Request.QueryString("yes")="upload" Then
        path=Trim(request("path"))
        'response.write(path&"---")
        'response.End 
            Dim FSO,FSOIsOK,F_FileName,mode
            F_FileName=Trim(request("nn"))
            mode =killint(Trim(request("mode")),0,0,2)
            FSOIsOK=1
            Set FSO=Server.CreateObject("Scripting.FileSystemObject")
            If Err<>0 Then
                Err.Clear
                FSOIsOK=0
            End If
            Dim D_Name,F_Name
            If FSOIsOK=1 Then
                        If InStr(1,path,":/")=0 Then 
                        path=Replace(Lcase(path),"/","/")
                        path = server.mappath(path)
                        path=Replace(path&"/","//","/")
                        Else
                        path=Replace(Lcase(path),"/","/")
                        path=Replace(path&"/","//","/")
                        End If 
                    if not fso.folderexists(path) Then
                    response.write "<a href=""javascript:history.back()""><font color='#000080'>基本路径查找失败,返回</font></a>"

                    response.End 
                    End If
            End If
            Set FSO=Nothing
            Dim FileUP
            Set FileUP=New Upload_File
            FileUP.GetDate(-1)
            Dim  F_FileType, F_File
            Set F_File=FileUP.File("File")
                If Len(F_FileName)<2 Then     F_FileName = F_File.FileName
                If Len(F_FileName)<2 Then 
                response.write("<a href='javascript:history.go(-1);'><font color='#000080'>空文件,请返回</font></a>")
                response.End
                End If 
            'F_FileType = Ucase(F_File.FileExt)
            'IF F_File.FileSize > 90000 Then
            '    Response.Write("<a href='javascript:history.go(-1);'>大小超过限制</a>")
            'exit sub
            IF IsvalidFileName(F_FileName) = False Then
                Response.Write("<a href='javascript:history.go(-1);'><font color='#000080'>名称有误</font></a>")
            Else
                Dim FileIsExists
                Set FSO=Server.CreateObject("Scripting.FileSystemObject")
                    FileIsExists=FSO.FileExists(path&F_FileName)
                If FileIsExists=True  And  mode<>1 Then 
                fso.deletefile(path&F_FileName)
                Response.Write("<font color='#000080'>文件已经存在,已经被删除</b></a>;")
                F_File.SaveToFile path&F_FileName
                Response.Write("<a href='upfso.asp?action=fso&path="&path&"'><b><font color='#000080'>点击这里继续上传:"&path&F_FileName&"</font></b></a>")
                ElseIf FileIsExists=True  And  mode=1 Then
                Response.Write("<font color='#000080'>文件已经存在,您选择了不覆盖</font></b>")
                Else
                F_File.SaveToFile path&F_FileName
                Response.Write("<a href='upfso.asp?action=fso&path="&path&"'><b><font color='#000080'>点击这里继续上传:"&path&F_FileName&"</font></b></a>")
                End If 
            End IF
            Set F_File=Nothing
            Set FileUP=Nothing
        Else
                Dim path,nn,mmode
                nn=Trim(request("nn"))
                mmode=Trim(request("mode"))
                path=Replace(request("path"),"//","/")
                If path="" Then path="../newup/"
            Response.Write("<form enctype=""multipart/form-data"" method=""post"" action=""upfso.asp?yes=upload&path="&path&"&nn="&nn&"&mode="&mmode&""" class=""admin_fso_up"" onsubmit=""CheckForm()""  name='form'><label>选择:<input name=""File"" type=""File""  size=""20""/></label><label> <input type=""Submit"" name=""Submit"" class=""submit"" value="" 上传 "" /></label></form>")
        End IF

    '效验名称
    Function IsvalidFileName(File_Name)
        IsvalidFileName = False
        Dim re,reStr
        Set re=new RegExp
        re.IgnoreCase =True
        re.Global=True
        re.Pattern="[^_/.a-zA-Z/d]"
        reStr=re.Replace(File_Name,"")
        If File_Name = reStr Then IsvalidFileName=True
        Set re=Nothing
    End Function

    %>

    upload.asp // 上传类
    代码如下:

    <%
    Dim oUpFileStream

    Class Upload_File

        Dim Form,File,Err

        Private Sub Class_Initialize
            Err=-1
        End Sub

        Private Sub Class_Terminate 
            'Clear Variables & Objects
            If Err < 0 Then
                oUpFileStream.Close
                Form.RemoveAll
                File.RemoveAll
                Set Form=Nothing
                Set File=Nothing
                Set oUpFileStream =Nothing
            End If
        End Sub

        Public Sub GetDate(RetSize)
            'Define Variables
            Dim RequestBinDate,sStart,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
            Dim iFileSize,sFilePath,sFileType,sFormvalue,sFileName
            Dim iFindStart,iFindEnd
            Dim iFormStart,iFormEnd,sFormName

            If Request.TotalBytes < 1 Then
                Err=1
                Exit Sub
            End If
            If RetSize > 0 Then 
                If Request.TotalBytes > RetSize Then
                    Err=2
                    Exit Sub
                End If
            End If
            Set Form = Server.CreateObject("Scripting.Dictionary")
            Form.CompareMode = 1
            Set File = Server.CreateObject("Scripting.Dictionary")
            File.CompareMode = 1
            Set tStream = Server.CreateObject("Adodb.Stream")
            Set oUpFileStream = Server.CreateObject("Adodb.Stream")
            oUpFileStream.Type = 1
            oUpFileStream.Mode = 3
            oUpFileStream.Open 
            oUpFileStream.Write Request.BinaryRead(Request.TotalBytes)
            oUpFileStream.Position=0
            RequestBinDate = oUpFileStream.Read 
            iFormEnd = oUpFileStream.Size
            bCrLf = chrB(13) & chrB(10)
            'Get Seperators
            sStart = MidB(RequestBinDate,1, InStrB(1,RequestBinDate,bCrLf)-1)
            iStart = LenB (sStart)
            iFormStart = iStart+2
            'Split Items
            Do
                iInfoEnd = InStrB(iFormStart,RequestBinDate,bCrLf & bCrLf)+3
                tStream.Type = 1
                tStream.Mode = 3
                tStream.Open
                oUpFileStream.Position = iFormStart
                oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart
                tStream.Position = 0
                tStream.Type = 2
                tStream.Charset = "UTF-8"
                sInfo = tStream.ReadText 
                'Get form item name
                iFormStart = InStrB(iInfoEnd,RequestBinDate,sStart)-1
                iFindStart = InStr(22,sInfo,"name=""",1)+6
                iFindEnd = InStr(iFindStart,sInfo,"""",1)
                sFormName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
                'If it's a file
                If InStr (45,sInfo,"filename=""",1) > 0 Then
                    Set oFileInfo= new FileInfo
                    'Get File attributes
                    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.add sFormName,oFileInfo
                Else
                    'If it's form item
                    tStream.Close
                    tStream.Type = 1
                    tStream.Mode = 3
                    tStream.Open
                    oUpFileStream.Position = iInfoEnd 
                    oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2
                    tStream.Position = 0
                    tStream.Type = 2
                    tStream.Charset = "UTF-8"
                    sFormvalue = tStream.ReadText 
                    If Form.Exists (sFormName) Then
                        Form (sFormName) = Form (sFormName) & ", " & sFormValue
                    Else
                        Form.Add sFormName,sFormvalue
                    End If
                End If
                tStream.Close
                iFormStart = iFormStart+iStart+2
                'Exit at end of file
            Loop Until (iFormStart+2) = iFormEnd 
            RequestBinDate=""
            Set tStream = Nothing
        End Sub

    End Class

        'Get File Info
    Class FileInfo
        Dim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt

        Private Sub Class_Initialize 
            FileName = ""
            FilePath = ""
            FileSize = 0
            FileStart= 0
            FormName = ""
            FileType = ""
            FileExt = ""
        End Sub

        'Save File Method
        Public Function SaveToFile(FullPath)
            Dim oFileStream,ErrorChar,i
            On Error Resume Next
            Set oFileStream=CreateObject("Adodb.Stream")
            oFileStream.Type=1
            oFileStream.Mode=3
            oFileStream.Open
            oUpFileStream.position=FileStart
            oUpFileStream.copyto oFileStream,FileSize
            oFileStream.SaveToFile FullPath,2
            oFileStream.Close
            Set oFileStream=Nothing
        End Function

        'Get File Content
        Public Function GetDate
            oUpFileStream.Position =FileStart
            GetDate=oUpFileStream.Read(FileSize)
        End Function
    End Class
    %>

    核心函数
    代码如下:

    Dim theInstalledObjects(17)
        theInstalledObjects(0) = "MSWC.AdRotator"
        theInstalledObjects(1) = "MSWC.BrowserType"
        theInstalledObjects(2) = "MSWC.NextLink"
        theInstalledObjects(3) = "MSWC.Tools"
        theInstalledObjects(4) = "MSWC.Status"
        theInstalledObjects(5) = "MSWC.Counters"
        theInstalledObjects(6) = "IISSample.ContentRotator"
        theInstalledObjects(7) = "IISSample.PageCounter"
        theInstalledObjects(8) = "MSWC.PermissionChecker"
        theInstalledObjects(9) = "Scripting.FileSystemObject"
        theInstalledObjects(10) = "adodb.connection"
        theInstalledObjects(11) = "SoftArtisans.FileUp"
        theInstalledObjects(12) = "SoftArtisans.FileManager"
        theInstalledObjects(13) = "JMail.SMTPMail"
        theInstalledObjects(14) = "CDONTS.NewMail"
        theInstalledObjects(15) = "Persits.MailSender"
        theInstalledObjects(16) = "LyfUpload.UploadFile"
        theInstalledObjects(17) = "Persits.Upload.1"
    Dim fso
    If  IsObjInstalled(theInstalledObjects(9)) Then 
    Set fso =Server.CreateObject("Scripting.FileSystemObject")
    End If 
    Function IsObjInstalled(strClassString)
     On Error Resume Next
     IsObjInstalled = False
     Err = 0
     Dim xTestObj
     Set xTestObj = Server.CreateObject(strClassString)
     If 0 = Err Then IsObjInstalled = True
     Set xTestObj = Nothing
     Err = 0
    End Function
    '检查组件版本
    Public Function getver(Classstr)
     On Error Resume Next
     Dim xTestObj
     Set xTestObj = Server.CreateObject(Classstr)
     If Err Then
      getver=""
     else 
       getver=xTestObj.version
     end if
     Set xTestObj = Nothing
    End Function
    '效验名称
    Function IsvalidFileName(File_Name)
     IsvalidFileName = False
     Dim re,reStr
     Set re=new RegExp
     re.IgnoreCase =True
     re.Global=True
     re.Pattern="[^_/.a-zA-Z/d]"
     reStr=re.Replace(File_Name,"")
     If File_Name = reStr Then IsvalidFileName=True
     Set re=Nothing
    End Function
    '文件写入
    Function writeto(xmlfloder,xmlfile,content,mode)
    writeto=false
    If Not IsObjInstalled(theInstalledObjects(9)) Then Exit Function 
    mode=killint(mode,0,0,2)
    xmlfloder=server.mappath(xmlfloder)
    Set fso =Server.CreateObject("Scripting.FileSystemObject")
     if not fso.folderexists(xmlfloder) Then
     fso.createfolder(xmlfloder)
     End If
    xmlfile=replace(xmlfloder&"/","//","/")&xmlfile
    ' response.write(warn_red(xmlfile))
    Dim fsoxml
    If fso.fileexists(xmlfile) And mode=1 Then '存在不写
     Exit Function 
    elseIf fso.fileexists(xmlfile) And mode=2 Then '重写
     Set fsoxml=fso.opentextfile(xmlfile,2)
     fsoxml.writeline(content)
     fsoxml.close
     writeto=true
    ElseIf fso.fileexists(xmlfile) And mode=8 Then '追加
     Set fsoxml=fso.opentextfile(xmlfile,8)
     fsoxml.writeline(content)
     fsoxml.close
     writeto=true
    ElseIf fso.fileexists(xmlfile) Then 
     Set fsoxml=fso.opentextfile(xmlfile,2)'重写
     fsoxml.writeline(content)
     fsoxml.close
     writeto=true
    Else
     Set fsoxml=fso.createtextfile(xmlfile)'创建
     fsoxml.writeline(content)
     fsoxml.close
     writeto=true
    End If 
    End Function
    '删除文件
    Function delaspfile(x)
    On Error Resume Next 
     delaspfile=False 
     If Not fileexitornot(x) Then 
     Exit Function 
     Else
     fso.deletefile server.mappath(x)
     delaspfile=True  
     End if 
    End Function
    '文件存在
    Function fileexitornot(file)
    On Error Resume Next 
    Dim f_re_file
    f_re_file=true 
    If not fso.fileexists(server.MapPath(file)) Then f_re_file=False 
    If err<>0 Then f_re_file=False  
    fileexitornot=f_re_file
    End Function

    '错误抑制,打印错误
    Function show_err(err)
    On Error Resume Next 
    If err.Number <> 0 Then 
    Response.Clear 
    Dim err_mess
    err_mess="<b>发生错误:</b><br/>错误 Number: "& err.Number&"<br/>错误信息:"&err.Description&"<br/>出错文件:"&err.Source&"<br/>出错行:"&err.Line&"(不被支持)<br/>"& err
    response.write(err_mess)
    End if
    End Function 
    '警告:
    Function warn_red(mess)
    warn_red="<font color=red><b>跟踪:"&mess&"</b></font><br/>"
    End Function 


    'FSO文件目录
    Function showallfile(path)
    'On Error Resume Next
    path=Replace(path,"//","/")
    set fso =  CreateObject("Scripting.FileSystemObject")
    Dim uploadPath,uploadfolder,objSubFolders,allfiles,fileitem,objSubFolder,
    sFileName
     If InStr(1,path,":/")=0 Then 
     path=Replace(path,"/","/")
     uploadPath = server.mappath(path)
     Else
     path=Replace(path,"/","/")
     uploadPath=path
     End If 
    response.write(warn_red(uploadPath))
    if not fso.folderexists(uploadPath) Then
    response.write warn_red("路径查找失败")
    Exit Function 
    End If 
    Set uploadfolder = fso.GetFolder(uploadPath)
    If uploadfolder.isrootfolder Then 
    response.write("<b>根目录</b><br/>")
    Else
    response.write("<b><font color=""#00008b"">父目录:</font><a href=""default.asp?action=fso&this=top&path="&uploadfolder.parentfolder&""">
    "&uploadfolder.parentfolder&" </a></b><br/>") 

    End If 
    response.write("<b>目录大小:"&int(uploadfolder.size/1024)&" KB</b><br/>") 
    set objSubFolders=uploadfolder.Subfolders
    Dim fso_mes
    fso_mes="<ol>"
    for each objSubFolder in objSubFolders
    fso_mes=fso_mes& "<li><b><a href=""default.asp?action=fso&this=top&path="&path&"/"&objSubFolder.name&"""><font color=blue>" & objSubFolder.name & "</font></a></b></li>"
    next
    set allfiles = uploadfolder.Files
    for each fileitem in allfiles
     fso_mes=fso_mes& "<li><a href=""default.asp?action=fso&this=file&path="&path&"/"&fileitem.Name&""">" & fileitem.Name & "</a></li>"
    Next
    fso_mes=fso_mes&"</ol>"
    response.write(fso_mes)
    response.write deltext(uploadPath,1)
    End Function

     

    '文件属性
    Function filepro(name)
    name=Replace(name,"//","/")
    Dim whichfile
    If InStr(1,name,":/")=0 Then 
    name=Replace(name,"/","/")
    whichfile = server.mappath(name)
    Else
    name=Replace(name,"/","/")
    whichfile=name
    End If 
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.fileexists(whichfile) Then 
     response.write(warn_red("文件不存在或者无访问权限"))
     Exit Function 
    End If 
    Dim f2,s_mess
    Set f2 = fso.GetFile(whichfile)
    s_mess = "<div class=""admin_post_form""><b><font color=""#00008b"">父目录:</font><a href=""default.asp?action=fso&this=top&path="&f2.parentfolder&""">"&f2.parentfolder&
    "</a></b><br/>"
    s_mess = s_mess & "文件名称:" & f2.name & "<br>"
    s_mess = s_mess & "文件短路径名:" & f2.shortPath & "<br>"
    s_mess = s_mess & "文件物理地址:" & f2.Path & "<br>"
    s_mess = s_mess & "文件属性:" & f2.Attributes & "<br>"
    s_mess = s_mess & "文件大小: " & f2.size & "<br>"
    s_mess = s_mess & "文件类型: " & f2.type & "<br>"
    s_mess = s_mess & "文件创建时间: " & f2.DateCreated & "<br>"
    s_mess = s_mess & "最近访问时间: " & f2.DateLastAccessed & "<br>"
    s_mess = s_mess & "最近修改时间: " & f2.DateLastModified&"<br/></div>"
    response.write(s_mess)
    If killint(Trim(request("type")),0,0,2)<>0 Then 
    showtext(whichfile)
    End If 
    response.write deltext(whichfile,0)
    End Function 
    '
    SUB showtext(files)
     dim iStr,adosText,strasp
     set adosText=Server.CreateObject("ADODB.Stream")
     adosText.mode=3
     adosText.type=2
     adosText.charset="gb2312"
     'adosText.charset="big5"
     adosText.open
     If InStr(1,files,":/")=0 Then 
     files=Replace(files,"/","/")
     files = server.mappath(files)
     Else
     files=Replace(files,"/","/")
     files=files
     End If 
     adosText.loadFromFile (files)
     strasp=adosText.ReadText()
     adosText.close
     set adosText=nothing%>
    <form method="post" class="admin_post_form" action="default.asp?action=fso&this=edit&mode=1">
     <textarea id="txt" name="txt" rows="15" cols="60"><%=Server.HTMLEncode(strasp)%></textarea>
    <label> <input name="path" type="hidden" value="<%=Trim(request("path"))%>"/><input type="submit" name="okedit" class="submit" value="确定编辑"> </label>
    </form>
    <%End Sub
    Function deltext(file,mode)
    Dim deltext_mess
    deltext_mess="<div class=""deltext"">"
    Select Case killint(mode,0,0,2)
    Case 0:
    deltext_mess=deltext_mess&"文件操作:<a href=""default.asp?action=fso&this=file&path="&file&""">属性</a><a  onclick=""{if(confirm('警告,非文本请不要读取,否则文件无法读取了,你坚持点击确定么?劝你点击取消')){return true;} return false;}"" href=""default.asp?action=fso&this=file&path="&file&"&type=1""><font color=red><b>编辑</b></font></a><a href=""default.asp?action=fso&this=move&path="&file&""">移动</a><a href=""default.asp?action=fso&this=copy&path="&file&"&mode=0"">复制</a><a href=""default.asp?action=fso&this=rename&path="&file&"&mode=0"">重命名</a><a  onclick=""{if(confirm('警告,删除操作不能恢复,小心使用!!!')){return true;} return false;}"" href=""default.asp?action=fso&this=del&path="&file&"&mode=0""><font color=red><b>删除</b></font></a>"

    Case 1:
    deltext_mess=deltext_mess&"文件夹操作:<a href=""default.asp?action=fso&this=top&path="&file&""">列表</a><a href=""default.asp?action=fso&this=add&path="&file&"&ff=1"">创建目录</a><a href=""default.asp?action=fso&this=add&path="&file&""">手建文件</a><a href=""default.asp?action=fso&this=up&path="&file&""">上传文件</a><a href=""default.asp?action=fso&this=move&path="&file&"&mode=1"">移动</a><a href=""default.asp?action=fso&this=copy&path="&file&"&mode=1"">复制</a><a href=""default.asp?action=fso&this=rename&path="&file&"&mode=1"">重命名</a><a  onclick=""{if(confirm('警告,删除操作不能恢复,以上列表的文件全部被删除,你坚持点击确定么?劝你点击取消')){return true;} return false;}"" href=""default.asp?action=fso&this=del&path="&file&"&mode=1""><font color=red><b>删除</b></font></a>"

    End Select
    deltext_mess=deltext_mess&"</div>"
    deltext=deltext_mess
    End Function

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告