ASP利用XML打包指定文件夹 并上传到WEB目录中,自行解包
2007-09-12 16:16
537 查看
'========================
'文件1
'Pack.asp
'更改 Cpathname 这一变量
'将在当前目录生成一个DATA.XML文件
'将DATA.XML及文件2(install.asp)上传至WEB根目录
'运行install.asp解包
'手动删除以上两个文件
'========================
<% Option Explicit %>
<% On Error Resume Next %>
<%
Server.ScriptTimeout=99999999
dim Cpathname
dim startime,endtime
'在此更改要打包文件夹的路径
Cpathname = "F:WEBsymr"
startime=timer()
function bianli(path)
dim doc
dim fso 'fso对象
dim objFolder '文件夹对象
dim objSubFolders '子文件夹集合
dim objSubFolder '子文件夹对象
dim objFiles '文件集合
dim objFile '文件对象
dim objStream
dim pathname,TextStream,pp,Xfolder,Xfpath,Xfile,Xpath,Xstream
set fso=server.CreateObject("scripting.filesystemobject")
set objFolder=fso.GetFolder(path)'创建文件夹对象
Response.Write path
Response.flush
Set doc = Server.CreateObject("MSxml2.DOMDocument")
doc.load Server.MapPath("data.xml")
doc.async=false
'写入每个文件夹路径
set Xfolder = doc.SelectSingleNode("//z-blog").AppendChild(doc.CreateElement("folder"))
Set Xfpath = Xfolder.AppendChild(doc.CreateElement("path"))
Xfpath.text = replace(path,Cpathname,"")
set objFiles=objFolder.Files
for each objFile in objFiles
Response.Write "
---"
pp = path & "" & objFile.name
Response.Write pp & "
"
Response.flush
'================================================
'写入文件的路径及文件内容
set Xfile = doc.SelectSingleNode("//z-blog").AppendChild(doc.CreateElement("file"))
Set Xpath = Xfile.AppendChild(doc.CreateElement("path"))
Xpath.text = replace(pp,Cpathname,"")
'创建文件流读入文件内容,并写入XML文件中
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.LoadFromFile(pp)
objStream.position = 0
Set Xstream = Xfile.AppendChild(doc.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
'================================================
next
Response.Write "<p>"
doc.save server.mappath("data.xml")
set Xfpath = nothing
set Xfolder = nothing
set doc = nothing
'创建的子文件夹对象
set objSubFolders=objFolder.Subfolders
'调用递归遍历子文件夹
for each objSubFolder in objSubFolders
pathname=path + "" + objSubFolder.name
bianli(pathname)
next
set objFolder=nothing
set objSubFolders=nothing
set fso=nothing
end function
dim doc,objPI
'创建一个空的XML文件,为写入文件作准备
Set doc = Server.CreateObject("MSxml2.DOMDocument")
doc.async=false
set objPI = doc.createProcessingInstruction("xml","version='1.0' encoding='UTF-8'")
doc.insertBefore objPI, doc.childNodes(0)
doc.appendChild(doc.CreateElement("z-blog"))
doc.save server.mappath("data.xml")
set objPI = nothing
set doc = nothing
bianli(Cpathname)
endtime=timer()
%>
页面执行时间:<%=FormatNumber((endtime-startime),3)%>秒
'=================================
'文件2
'install.asp
'此文件改自z-blog安装文件
'=================================
<%@ CODEPAGE=65001 %>
<% Option Explicit %>
<% On Error Resume Next %>
<% Response.Charset="UTF-8" %>
<html>
<head>
<title>文件解包程序</title>
</head>
<body>
<textarea name="content" cols="90" rows="20" style="border:0px;overflow:auto;border-width:0px;width:100%;background-color:#E8F3FF;" scrolling="auto">
<%
Dim strLocalPath
'得到当前文件夹的物理路径
strLocalPath=Left(Request.ServerVariables("PATH_TRANSLATED"),InStrRev(Request.ServerVariables("PATH_TRANSLATED"),""))
Dim strDbPath
Dim objXmlFile
Dim objNodeList
Dim objFSO
Dim objStream
Dim i,j
Set objXmlFile = Server.CreateObject("Microsoft.XMLDOM")
objXmlFile.load(Server.MapPath("data.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 & vbCrlf
Response.Flush
Next
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 & vbCrlf
Response.Flush
.Close
End With
Set objStream = Nothing
Next
End If
End If
%>
</textarea>
<%response.write "<script>alert('文件解包完毕!');</script>"%>
'文件1
'Pack.asp
'更改 Cpathname 这一变量
'将在当前目录生成一个DATA.XML文件
'将DATA.XML及文件2(install.asp)上传至WEB根目录
'运行install.asp解包
'手动删除以上两个文件
'========================
<% Option Explicit %>
<% On Error Resume Next %>
<%
Server.ScriptTimeout=99999999
dim Cpathname
dim startime,endtime
'在此更改要打包文件夹的路径
Cpathname = "F:WEBsymr"
startime=timer()
function bianli(path)
dim doc
dim fso 'fso对象
dim objFolder '文件夹对象
dim objSubFolders '子文件夹集合
dim objSubFolder '子文件夹对象
dim objFiles '文件集合
dim objFile '文件对象
dim objStream
dim pathname,TextStream,pp,Xfolder,Xfpath,Xfile,Xpath,Xstream
set fso=server.CreateObject("scripting.filesystemobject")
set objFolder=fso.GetFolder(path)'创建文件夹对象
Response.Write path
Response.flush
Set doc = Server.CreateObject("MSxml2.DOMDocument")
doc.load Server.MapPath("data.xml")
doc.async=false
'写入每个文件夹路径
set Xfolder = doc.SelectSingleNode("//z-blog").AppendChild(doc.CreateElement("folder"))
Set Xfpath = Xfolder.AppendChild(doc.CreateElement("path"))
Xfpath.text = replace(path,Cpathname,"")
set objFiles=objFolder.Files
for each objFile in objFiles
Response.Write "
---"
pp = path & "" & objFile.name
Response.Write pp & "
"
Response.flush
'================================================
'写入文件的路径及文件内容
set Xfile = doc.SelectSingleNode("//z-blog").AppendChild(doc.CreateElement("file"))
Set Xpath = Xfile.AppendChild(doc.CreateElement("path"))
Xpath.text = replace(pp,Cpathname,"")
'创建文件流读入文件内容,并写入XML文件中
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.LoadFromFile(pp)
objStream.position = 0
Set Xstream = Xfile.AppendChild(doc.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
'================================================
next
Response.Write "<p>"
doc.save server.mappath("data.xml")
set Xfpath = nothing
set Xfolder = nothing
set doc = nothing
'创建的子文件夹对象
set objSubFolders=objFolder.Subfolders
'调用递归遍历子文件夹
for each objSubFolder in objSubFolders
pathname=path + "" + objSubFolder.name
bianli(pathname)
next
set objFolder=nothing
set objSubFolders=nothing
set fso=nothing
end function
dim doc,objPI
'创建一个空的XML文件,为写入文件作准备
Set doc = Server.CreateObject("MSxml2.DOMDocument")
doc.async=false
set objPI = doc.createProcessingInstruction("xml","version='1.0' encoding='UTF-8'")
doc.insertBefore objPI, doc.childNodes(0)
doc.appendChild(doc.CreateElement("z-blog"))
doc.save server.mappath("data.xml")
set objPI = nothing
set doc = nothing
bianli(Cpathname)
endtime=timer()
%>
页面执行时间:<%=FormatNumber((endtime-startime),3)%>秒
'=================================
'文件2
'install.asp
'此文件改自z-blog安装文件
'=================================
<%@ CODEPAGE=65001 %>
<% Option Explicit %>
<% On Error Resume Next %>
<% Response.Charset="UTF-8" %>
<html>
<head>
<title>文件解包程序</title>
</head>
<body>
<textarea name="content" cols="90" rows="20" style="border:0px;overflow:auto;border-width:0px;width:100%;background-color:#E8F3FF;" scrolling="auto">
<%
Dim strLocalPath
'得到当前文件夹的物理路径
strLocalPath=Left(Request.ServerVariables("PATH_TRANSLATED"),InStrRev(Request.ServerVariables("PATH_TRANSLATED"),""))
Dim strDbPath
Dim objXmlFile
Dim objNodeList
Dim objFSO
Dim objStream
Dim i,j
Set objXmlFile = Server.CreateObject("Microsoft.XMLDOM")
objXmlFile.load(Server.MapPath("data.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 & vbCrlf
Response.Flush
Next
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 & vbCrlf
Response.Flush
.Close
End With
Set objStream = Nothing
Next
End If
End If
%>
</textarea>
<%response.write "<script>alert('文件解包完毕!');</script>"%>
相关文章推荐
- ASP利用XML打包指定文件夹 并上传到WEB目录中,自行解包
- 利用Windows Service,定时监控某一目录,发现新文件后自动上传到指定web服务器
- 使用intelij idea 编写maven构建的java web项目指定resource目录下的文件夹输出的web-inf 根目录的方法
- 用asp实现把文件打包成Xml文件包,带解包的ASP工具附下载
- FTP上传下载文件,利用FTP传输文件到指定目录
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小
- 利用XML序列化和Asp.Net Web缓存实现站点配置文件
- asp.net让FCKEditor上传图片到动态指定的目录
- asp.net 删除文件夹,指定文件夹,删除文件夹和所有文件,删除权限设置,递归删除文件夹目录及文件
- ASP.NET中利用WebClient上传图片到远程服务的方法
- Asp.net获取服务器指定文件夹目录文件并提供下载的方法
- Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹
- ASP.NET 删除指定目录下的所有文件和文件夹
- 打包指定文件夹的所有文件,不包含目录
- Asp.net获取服务器指定文件夹目录文件并提供下载的方法
- Asp.net 获取服务器指定文件夹目录文件,并提供下载
- asp.net uploadify文件已上传到指定目录,但进度条却显示的是上传失败信息HTTP Error
- tar自动打包指定文件夹中的文件到指定目录
- ewebeditor asp版 2.1.6 上传漏洞利用程序
- asp怎么把图片上传到指定的文件夹,然后在数据库中记录图片的路径