欢迎来到福编程网,本站提供各种互联网专业知识!

asp下利用xml打包网站文件

发布时间:2008-06-01 作者: 来源:转载
今天在网上找了下用xml打包文件、文件夹之类的内容看了看,在本机上调试了下,感觉还挺有用处
这个方法可以把整个文件夹打包到xml文件中,把这个xml文件文件和解包文件放在一起后,运行解包文件就可以把原来的文件释放出来,这样我们就可以把网站打包上传到虚拟主机,再运行解包文件就可以了。我在本地测试之选择了少部分文件,不知在文件很多的情况执行效率如何。
其实实现的思路也很简单,主要利用的是xml文件可以存放二进制数据的原理。有兴趣的朋友可以下载下面的附件研究下!!
解包文件
复制代码 代码如下:
<%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%>
<%OptionExplicit%>
<%OnErrorResumeNext%>
<%Response.Charset="UTF-8"%>
<%Server.ScriptTimeout=99999999%>




全福编程网——文件解包程序_www.jb51.net


<%
DimstrLocalPath
'得到当前文件夹的物理路径
strLocalPath=Left(Request.ServerVariables("PATH_TRANSLATED"),InStrRev(Request.ServerVariables("PATH_TRANSLATED"),""))

DimobjXmlFile
DimobjNodeList
DimobjFSO
DimobjStream
Dimi,j

SetobjXmlFile=Server.CreateObject("Microsoft.XMLDOM")
objXmlFile.load(Server.MapPath("update.xml"))

IfobjXmlFile.readyState=4Then
IfobjXmlFile.parseError.errorCode=0Then

SetobjNodeList=objXmlFile.documentElement.selectNodes("//folder/path")
SetobjFSO=CreateObject("Scripting.FileSystemObject")

j=objNodeList.length-1
Fori=0Toj
IfobjFSO.FolderExists(strLocalPath&objNodeList(i).text)=FalseThen
objFSO.CreateFolder(strLocalPath&objNodeList(i).text)
EndIf
Response.Write"创建目录"&objNodeList(i).text&"

"
Response.Flush
Next
SetobjFSO=nothing
SetobjNodeList=nothing
SetobjNodeList=objXmlFile.documentElement.selectNodes("//file/path")

j=objNodeList.length-1
Fori=0Toj
SetobjStream=CreateObject("ADODB.Stream")
WithobjStream
.Type=1
.Open
.WriteobjNodeList(i).nextSibling.nodeTypedvalue
.SaveToFilestrLocalPath&objNodeList(i).text,2
Response.Write"释放文件"&objNodeList(i).text&"

"
Response.Flush
.Close
EndWith
SetobjStream=Nothing
Next
SetobjNodeList=nothing
EndIf
EndIf

SetobjXmlFile=Nothing

response.write"文件解包完毕"
%>



pack.asp 打包文件
复制代码 代码如下:
<%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%>
<%OptionExplicit%>
<%OnErrorResumeNext%>
<%Response.Charset="UTF-8"%>
<%Server.ScriptTimeout=99999999%>




文件打包程序_全福编程网_www.jb51.net


<%
DimZipPathDir,ZipPathFile
Dimstartime,endtime
'在此更改要打包文件夹的路径
ZipPathDir="D:testaspdictionaryxmlPackedscrollColor"'
ZipPathFile="update.xml"
ifright(ZipPathDir,1)<>""thenZipPathDir=ZipPathDir&""
'开始打包
CreateXml(ZipPathFile)
'遍历目录内的所有文件以及文件夹
subLoadData(DirPath)
dimXmlDoc
dimfso'fso对象
dimobjFolder'文件夹对象
dimobjSubFolders'子文件夹集合
dimobjSubFolder'子文件夹对象
dimobjFiles'文件集合
dimobjFile'文件对象
dimobjStream
dimpathname,TextStream,pp,Xfolder,Xfpath,Xfile,Xpath,Xstream
dimPathNameStr
response.Write("=========="&DirPath&"==========

")
setfso=server.CreateObject("scripting.filesystemobject")
setobjFolder=fso.GetFolder(DirPath)'创建文件夹对象

Response.WriteDirPath
Response.flush

SetXmlDoc=Server.CreateObject("Microsoft.XMLDOM")
XmlDoc.loadServer.MapPath(ZipPathFile)
XmlDoc.async=false

'写入每个文件夹路径
setXfolder=XmlDoc.SelectSingleNode("//root").AppendChild(XmlDoc.CreateElement("folder"))
SetXfpath=Xfolder.AppendChild(XmlDoc.CreateElement("path"))
Xfpath.text=replace(DirPath,ZipPathDir,"")
setobjFiles=objFolder.Files
foreachobjFileinobjFiles
iflcase(DirPath&objFile.name)<>lcase(Request.ServerVariables("PATH_TRANSLATED"))then
Response.Write"---

"
PathNameStr=DirPath&""&objFile.name
Response.WritePathNameStr&""
Response.flush
'================================================
'写入文件的路径及文件内容
setXfile=XmlDoc.SelectSingleNode("//root").AppendChild(XmlDoc.CreateElement("file"))
SetXpath=Xfile.AppendChild(XmlDoc.CreateElement("path"))
Xpath.text=replace(PathNameStr,ZipPathDir,"")
'创建文件流读入文件内容,并写入XML文件中
SetobjStream=Server.CreateObject("ADODB.Stream")
objStream.Type=1
objStream.Open()
objStream.LoadFromFile(PathNameStr)
objStream.position=0

SetXstream=Xfile.AppendChild(XmlDoc.CreateElement("stream"))
Xstream.SetAttribute"xmlns:dt","urn:schemas-microsoft-com:datatypes"
'文件内容采用二制方式存放
Xstream.dataType="bin.base64"
Xstream.nodeTypedValue=objStream.Read()

setobjStream=nothing
setXpath=nothing
setXstream=nothing
setXfile=nothing
'================================================
endif
next
Response.Write"

"
XmlDoc.Save(Server.Mappath(ZipPathFile))
setXfpath=nothing
setXfolder=nothing
setXmlDoc=nothing

'创建的子文件夹对象
setobjSubFolders=objFolder.Subfolders
'调用递归遍历子文件夹
foreachobjSubFolderinobjSubFolders
pathname=DirPath&objSubFolder.name&""
LoadData(pathname)
next
setobjFolder=nothing
setobjSubFolders=nothing
setfso=nothing

endsub

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


相关推荐