手机
当前位置:查字典教程网 >编程开发 >XML/RSS >asp下利用xml打包网站文件
asp下利用xml打包网站文件
摘要:这个方法可以把整个文件夹打包到xml文件中,把这个xml文件文件和解包文件放在一起后,运行解包文件就可以把原来的文件释放出来,这样我们就可以...

这个方法可以把整个文件夹打包到xml文件中,把这个xml文件文件和解包文件放在一起后,运行解包文件就可以把原来的文件释放出来,这样我们就可以把网站打包上传到虚拟主机,再运行解包文件就可以了。我在本地测试之选择了少部分文件,不知在文件很多的情况执行效率如何。

其实实现的思路也很简单,主要利用的是xml文件可以存放二进制数据的原理。有兴趣的朋友可以下载下面的附件研究下!!

解包文件

复制代码 代码如下:

<%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%>

<%OptionExplicit%>

<%OnErrorResumeNext%>

<%Response.Charset="UTF-8"%>

<%Server.ScriptTimeout=99999999%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>

<title>查字典教程网——文件解包程序_www.jb51.net</title>

</head>

<body>

<%

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&"<br/>"

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&"<br/>"

Response.Flush

.Close

EndWith

SetobjStream=Nothing

Next

SetobjNodeList=nothing

EndIf

EndIf

SetobjXmlFile=Nothing

response.write"文件解包完毕"

%>

</body>

</html>

pack.asp 打包文件

复制代码 代码如下:

<%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%>

<%OptionExplicit%>

<%OnErrorResumeNext%>

<%Response.Charset="UTF-8"%>

<%Server.ScriptTimeout=99999999%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>

<title>文件打包程序_查字典教程网_www.jb51.net</title>

</head>

<body>

<%

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&"==========<br>")

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"---<br/>"

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"<p>"

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

%>

</body>

</html>

【asp下利用xml打包网站文件】相关文章:

使用xmldom在服务器端生成静态html页面

asp读取xml文件和记数

非常不错的WAP常见问题问答大全(二)第1/3页

使用xmlhttp为网站增加域名查询功能

XML 非法字符(转义字符)

XML卷之实战锦囊(4):选单连动

XSLT轻松入门第四章:XPath的语法

读写xml文件的2个小函数

WMLScript脚本程序设计第1/9页

XML轻松学习手册(2)XML概念

精品推荐
分类导航