今天在网上找了下用xml打包文件、文件夹之类的内容看了看,在本机上调试了下,感觉还挺有用处

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

代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% Option Explicit %> <% On Error Resume Next %> <% Response.Charset="UTF-8" %> <% Server.ScriptTimeout=99999999 %>
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>脚本之家——文件解包程序_www.jb51.net</title> </head> <body> <% 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 & "<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>

pack.asp 打包文件

代码如下:

<%@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>文件打包程序_脚本之家_www.jb51.net</title> </head> <body> <% 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&"==========<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")) 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             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 %> </body> </html>

更多相关文章

  1. dom4j解析xml文件代码示例
  2. 用Java解析XML文件的代码示例
  3. src下xml等资源文件无法读取的问题在IDEA中如何解决
  4. 调用API生成RSS资源文件的实例详解
  5. 布局文件如何使用?总结布局文件实例用法
  6. 总结关于文件记录操作实例教程
  7. xml文件用什么软件打开
  8. 四种使用dom4j读取xml文件的方式
  9. 用 NodeJS 重命名系统文件[每日前端夜话0xB2]

随机推荐

  1. 请问在哪可以下载jpython?
  2. Python脚本——连接到SSH并运行命令
  3. python学习笔记回忆录
  4. CDays -4 可用的首个Python脚本
  5. 生产者-消费者问题
  6. python学习笔记<二>
  7. python string_3 end 内建函数详解
  8. 为什么分配给True / False不能像我期望的
  9. 用Python来找合适的妹子
  10. Python 获得最近一个月的每天的日期