asp下使用xml打包网站文件

       今儿个闲着,在网上找了些用xml打包文件、文件夹之类的内容看了下,爱站小编试着调试了下,感觉还挺有用的,现在就分享给各位,一起来看下asp下使用xml打包网站文件吧。

       这个方法可以把整个文件夹打包到xml文件中,把这个xml文件文件和解包文件放在一起后,运行解包文件就可以把原来的文件释放出来,这样我们就可以把网站打包上传到虚拟主机,再运行解包文件就可以了。我在本地测试之选择了少部分文件,不知在文件很多的情况执行效率如何。
       其实实现的思路也很简单,主要利用的是xml文件可以存放二进制数据的原理。
解包文件

nbsp;html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

爱站技术频道——文件解包程序_www.aizhan.com

Dim strLocalPath

‘得到当前文件夹的物理路径

strLocalPath=Left(Request.ServerVariables(“PATH_TRANSLATED”),InStrRev(Request.ServerVariables(“PATH_TRANSLATED”),”\”))

Dim objXmlFile

Dim objNodeList

Dim objFSO

Dim objStream

Dim i,j

Set objXmlFile = Server.CreateObject(“Microsoft.XMLDOM”)

    objXmlFile.load(Server.MapPath(“update.xml”))

    If objXmlFile.readyState=4 Then

        If objXmlFile.parseError.errorCode = 0 Then

            Set objNodeList = objXmlFile.documentElement.selectNodes(“//folder/path”)

            Set objFSO = CreateObject(“Scripting.FileSystemObject”)

                j=objNodeList.length-1

                For i=0 To j

                    If objFSO.FolderExists(strLocalPath & objNodeList(i).text)=False Then

                        objFSO.CreateFolder(strLocalPath & objNodeList(i).text)

                    End If

                    Response.Write “创建目录” & objNodeList(i).text & ”



                    Response.Flush

                Next

            Set objFSO = nothing

            Set objNodeList = nothing

            Set objNodeList = objXmlFile.documentElement.selectNodes(“//file/path”)

                j=objNodeList.length-1

                For i=0 To j

                    Set objStream = CreateObject(“ADODB.Stream”)

                        With objStream

                            .Type = 1

                            .Open

                            .Write objNodeList(i).nextSibling.nodeTypedvalue

                            .SaveToFile strLocalPath & objNodeList(i).text,2

                            Response.Write “释放文件” & objNodeList(i).text & ”



                            Response.Flush

                            .Close

                        End With

                    Set objStream = Nothing

                Next

            Set objNodeList = nothing

        End If

    End If

Set objXmlFile = Nothing

response.write “文件解包完毕”

%>

pack.asp 打包文件

 

 

nbsp;html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

文件打包程序_爱站技术频道_www.aizhan.com

Dim ZipPathDir,ZipPathFile

Dim startime,endtime

‘在此更改要打包文件夹的路径

ZipPathDir = “D:\testasp\dictionary\xmlPacked\scrollColor”‘

ZipPathFile = “update.xml”

if right(ZipPathDir,1)”\” then ZipPathDir=ZipPathDir&”\”

‘开始打包

CreateXml(ZipPathFile)

‘遍历目录内的所有文件以及文件夹

sub LoadData(DirPath)

    dim XmlDoc

    dim fso            ‘fso对象

    dim objFolder      ‘文件夹对象

    dim objSubFolders  ‘子文件夹集合

    dim objSubFolder   ‘子文件夹对象

    dim objFiles       ‘文件集合

    dim objFile        ‘文件对象

    dim objStream

    dim pathname,TextStream,pp,Xfolder,Xfpath,Xfile,Xpath,Xstream

    dim PathNameStr

    response.Write(“==========”&DirPath&”==========

“)

    set fso=server.CreateObject(“scripting.filesystemobject”)

    set objFolder=fso.GetFolder(DirPath)’创建文件夹对象

    Response.Write DirPath

    Response.flush

    Set XmlDoc = Server.CreateObject(“Microsoft.XMLDOM”)

    XmlDoc.load Server.MapPath(ZipPathFile)

    XmlDoc.async=false

    ‘写入每个文件夹路径

    set Xfolder = XmlDoc.SelectSingleNode(“//root”).AppendChild(XmlDoc.CreateElement(“folder”))

    Set Xfpath = Xfolder.AppendChild(XmlDoc.CreateElement(“path”))

        Xfpath.text = replace(DirPath,ZipPathDir,””)

        set objFiles=objFolder.Files

            for each objFile in objFiles

                if lcase(DirPath & objFile.name)  lcase(Request.ServerVariables(“PATH_TRANSLATED”)) then

                    Response.Write “—



                    PathNameStr = DirPath & “” & objFile.name

                    Response.Write PathNameStr & “”

                    Response.flush

                    ‘================================================

                    ‘写入文件的路径及文件内容

                   set Xfile = XmlDoc.SelectSingleNode(“//root”).AppendChild(XmlDoc.CreateElement(“file”))

                   Set Xpath = Xfile.AppendChild(XmlDoc.CreateElement(“path”))

                       Xpath.text = replace(PathNameStr,ZipPathDir,””)

                   ‘创建文件流读入文件内容,并写入XML文件中

                   Set objStream = Server.CreateObject(“ADODB.Stream”)

                   objStream.Type = 1

                   objStream.Open()

                   objStream.LoadFromFile(PathNameStr)

                   objStream.position = 0

                   Set Xstream = Xfile.AppendChild(XmlDoc.CreateElement(“stream”))

                       Xstream.SetAttribute “xmlns:dt”,”urn:schemas-microsoft-com:datatypes”

                       ‘文件内容采用二制方式存放

                       Xstream.dataType = “bin.base64”

                       Xstream.nodeTypedValue = objStream.Read()

                   set objStream=nothing

                   set Xpath = nothing

                   set Xstream = nothing

                   set Xfile = nothing

                  ‘================================================

                end if

            next

    Response.Write ”


    XmlDoc.Save(Server.Mappath(ZipPathFile))
    set Xfpath = nothing
    set Xfolder = nothing
    set XmlDoc = nothing

    ‘创建的子文件夹对象
    set objSubFolders=objFolder.Subfolders
        ‘调用递归遍历子文件夹
        for each objSubFolder in objSubFolders
            pathname = DirPath & objSubFolder.name & “\”
            LoadData(pathname)
        next
    set objFolder=nothing
    set objSubFolders=nothing
    set fso=nothing

end sub

‘创建一个空的XML文件,为写入文件作准备
sub CreateXml(FilePath)
    ‘程序开始执行时间
    startime=timer()
    dim XmlDoc,Root
    Set XmlDoc = Server.CreateObject(“Microsoft.XMLDOM”)
        XmlDoc.async = False
        Set Root = XmlDoc.createProcessingInstruction(“xml”,”version=’1.0′ encoding=’UTF-8′”)
        XmlDoc.appendChild(Root)
        XmlDoc.appendChild(XmlDoc.CreateElement(“root”))
        XmlDoc.Save(Server.MapPath(FilePath))
        Set Root = Nothing
    Set XmlDoc = Nothing
    LoadData(ZipPathDir)
    ‘程序结束时间
    endtime=timer()
    response.Write(“页面执行时间:” & FormatNumber((endtime-startime),3) & “秒”)
end sub
%>

asp下使用xml打包网站文件就为大家介绍到这里,如果还有其他疑问,欢迎补充,有任何问题也可以与爱站编辑一起讨论。