首先是打包(谈不上压缩,不过经常用ftp的情况下,经常这样打包会好很多的,ftp最怕的就是零碎文件太多,况且现在的网络情况...)
打包代码
- <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
- <% Option Explicit %>
- <% On Error Resume Next %>
- <% Response.Charset="UTF-8" %>
- <% Server.ScriptTimeout=99999999 %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>文件打包程序</title>
- </head>
- <body>
- <%
- Dim ZipPathDir, ZipPathFile, ZipFileExt
- Dim startime, endtime
- '此为默认当前文件夹
- ZipPathDir = Left(Request.ServerVariables("PATH_TRANSLATED"), InStrRev(Request.ServerVariables("PATH_TRANSLATED"), "\"))
- '在此更改要打包文件夹的路径
- 'ZipPathDir="D:\MYWEB\WEBINFO"
- '生成的xml文件
- ZipPathFile = "update.xml"
- '不进行打包的文件扩展名
- ZipFileExt = "db;bak"
- 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&"==========<br>")
- 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")) And LCase(DirPath & objFile.Name) <> LCase(DirPath & ZipPathFile) Then
- If ext(objFile.Name) Then
- Response.Write "---<br/>"
- 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
- End If
- Next
- Response.Write "<p>"
- 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
- '判断文件类型是否合法
- Function ext(filename)
- ext = true
- Dim temp_ext, e
- temp_ext = Split(ZipFileExt, ";")
- For e = 0 To UBound(temp_ext)
- If Mid(filename, InstrRev(filename, ".") + 1) = temp_ext(e) Then ext = false
- Next
- End Function
- %>
- </body>
- </html>
解压代码:
- <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
- <% Option Explicit %>
- <% On Error Resume Next %>
- <% Response.Charset="UTF-8" %>
- <% Server.ScriptTimeout=99999999 %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>文件解包程序</title>
- </head>
- <body>
- <%
- Dim strLocalPath,strXmlFile
- '要解压的打包成XML的文件
- strXmlFile = "update.xml"
- '得到当前文件夹的物理路径
- 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(strXmlFile))
- 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 & "<br/>"
- 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 & "<br/>"
- Response.Flush
- .Close
- End With
- Set objStream = Nothing
- Next
- Set objNodeList = Nothing
- End If
- End If
- Set objXmlFile = Nothing
- Response.Write "文件解包完毕"
- %>
- </body>
- </html>