ASP打包成Xml(己更正)

发贴心情
ASP打包成Xml

Pack.asp

 <%
 Dim ZipPathDir,ZipPathFile
 Dim startime,endtime
 Dim FilePath,DirPath
 '在此更改要打包文件夹的路径
 ZipPathDir = "I:/备份文件/MySite/pzwx.cn/html/html"
 '这是要打包成的XML文件名
 ZipPathFile = "Player.xml"
 if right(ZipPathDir,1)<>"/" then ZipPathDir=ZipPathDir&"/"
 '开始打包
Call 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("//data").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("//data").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("data"))
   XmlDoc.Save(Server.MapPath(FilePath))
   Set Root = Nothing
  Set XmlDoc = Nothing
 Call LoadData(ZipPathDir)
  '程序结束时间
  endtime=timer()
  response.Write("页面执行时间:" & FormatNumber((endtime-startime),3) & "秒")
end sub


%>

install.asp

<%
Dim Path
Path = Left(Request.ServerVariables("PATH_INFO"),InstrRev(Request.ServerVariables("PATH_INFO"),"/"))
Dim strInstallPath,varInstallPath
strInstallPath = Path
varInstallPath = strInstallPath

Response.Write "<ul>"
Response.Write "<li>正在安装系统...</li>"
Response.Flush()

Call Release("Player.xml",strInstallPath)
If Right(varInstallPath,1) <> "/" Then varInstallPath = varInstallPath & "/"
Response.Write "<li>正在生成Html页面...</li>"
Response.Flush()

Response.Write "<script type=""text/javascript"" src=""" & varInstallPath & "save.asp""></script>"
Response.Write "<li>安装成功。:)</li>"
Response.Flush()
Response.Write "</ul>"


'Release *** ***  www.pzwx.cn  *** ***
Sub Release(strFileXML,strLocalPath)
 Dim objXmlFile
 Dim objNodeList
 Dim objFSO
 Dim objStream
 Dim I,J
 strLocalPath = Server.MapPath(strLocalPath)
 If Right(strLocalPath,1) <> "/" Then strLocalPath = strLocalPath & "/"
 Set objXmlFile = CreateObject("Microsoft.XMLDOM")
  objXmlFile.load(Server.MapPath(strFileXML))
  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 Not objFSO.FolderExists(strLocalPath & objNodeList(I).Text) Then
        objFSO.CreateFolder(strLocalPath & objNodeList(I).Text)
        Response.Write "<li>创建目录:" & strLocalPath & objNodeList(I).Text & "</li>"
        Response.Flush()
       End If
      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
        .Close()
       End With
      Set objStream = Nothing
      Response.Write "<li>创建文件:" & strLocalPath & objNodeList(I).Text & "</li>"
      Response.Flush()
     Next
    Set objNodeList = nothing
   End If
  End If
 Set objXmlFile = Nothing
End Sub
%>

己经测试,可以正常使用,现在上传文件不用一个一个传了,可以打了包再传了!

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值