用asp实现把文件打包成Xml文件包,带解包的ASP工具附下载

2018-09-06 11:09

阅读:501

  把文件打包成Xml文件包,带解包的ASP工具!

把网站源码全部打包到Xml文件里面,生成updata.xml文件,把xml文件上传到空间里面
然后通过install.asp文件将文件全部释放出来。
就和z-blog的自动安装包一样的功能呵呵。
代码是落伍的一位兄弟写的,不过代码好像有错误,这个是我参考他的修改过了,可以正常运行!~~
此代码可以应用到asp程序的自动升级服务上面。具体怎么来实现,欢迎探讨!~~
就在下面回帖探讨!~~~
不用设定打包目录版,需要设定打包目录版这两个版本的区别:
不用设定打包目录版,直接放到你需要打包的目录执行就可以了。
需要设定打包目录版,必须指定需要打包的路径(在程序里修改),不指定,不能进行打包。
不用设定目录-打包文件
复制代码 代码如下:
<%@LANGUAGE=VBSCRIPTCODEPAGE=65001%>
<%OptionExplicit%>
<%OnErrorResumeNext%>
<%Response.Charset=UTF-8%>
<%Server.ScriptTimeout=99999999%>
<!DOCTYPEhtmlPUBLIC-//W3C//DTDXHTML1.0Transitional//EN
<htmlxmlns=
<head>
<metahttp-equiv=Content-Typecontent=text/html;charset=utf-8/>
<title>文件打包程序</title>
</head>

<body>
<%


DimZipPathDir,ZipPathFile,ZipFileExt
Dimstartime,endtime
在此更改要打包文件夹的路径
ZipPathDir=Left(Request.ServerVariables(PATH_TRANSLATED),InStrRev(Request.ServerVariables(PATH_TRANSLATED),\))
生成的xml文件
ZipPathFile=update.xml
不进行打包的文件扩展名
ZipFileExt=db;bak
ifright(ZipPathDir,1)<>\thenZipPathDir=ZipPathDir&\
开始打包
CreateXml(ZipPathFile)
遍历目录内的所有文件以及文件夹
subLoadData(DirPath)
dimXmlDoc
dimfsofso对象
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.load(Server.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
ifext(objFile.name)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.SetAttributexmlns:dt,urn:schemas-microsoft-com:datatypes
文件内容采用二制方式存放
Xstream.dataType=bin.base64
Xstream.nodeTypedValue=objStream.Read()

setobjStream=nothing
setXpath=nothing
setXstream=nothing
setXfile=nothing
================================================
endif
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.0encoding=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

判断文件类型是否合法
functionext(filename)
ext=true
dimtemp_ext,e
temp_ext=Split(ZipFileExt,;)
fore=0toubound(temp_ext)
ifmid(filename,InstrRev(filename,.)+1)=temp_ext(e)thenext=false
next
endfunction
%>
</body>
</html>

解压asp文件
复制代码 代码如下:
<%@LANGUAGE=VBSCRIPTCODEPAGE=65001%>
<%OptionExplicit%>
<%OnErrorResumeNext%>
<%Response.Charset=UTF-8%>
<%Server.ScriptTimeout=99999999%>
<!DOCTYPEhtmlPUBLIC-//W3C//DTDXHTML1.0Transitional//EN
<htmlxmlns=
<head>
<metahttp-equiv=Content-Typecontent=text/html;charset=utf-8/>
<title>文件解包程序</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>

打包文件下载


评论


亲,登录后才可以留言!