ASP利用XML打包指定文件夹 并上传到WEB目录中,自行解包_ASP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:ASP Error对象的技巧
在VBScript中,有一个On Error Resume Next语句,它使脚本解释器忽略运行期错误并继续脚本代码的执行。接着该脚本可以检查Err.Number属性的值,判别是否出现了错误。如果出现错误,返回一个非零值。在ASP 3.0中,也可以使用On Error Goto 0“转回到”缺省的

  1. '======================== 
  2. '文件1 
  3. 'Pack.asp 
  4. '更改 Cpathname 这一变量 
  5. '将在当前目录生成一个DATA.XML文件 
  6. '将DATA.XML及文件2(install.asp)上传至WEB根目录 
  7. '运行install.asp解包 
  8. '手动删除以上两个文件  
  9. '======================== 
  10. <% Option Explicit %> 
  11. <% On Error Resume Next %> 
  12. <% 
  13. Server.ScriptTimeout=99999999 
  14. dim Cpathname 
  15. dim startime,endtime 
  16.  
  17. '在此更改要打包文件夹的路径 
  18. Cpathname = "F:WEBsymr" 
  19.  
  20. startime=timer() 
  21. function bianli(path) 
  22. dim doc 
  23. dim fso 'fso对象 
  24. dim objFolder '文件夹对象 
  25. dim objSubFolders '子文件夹集合 
  26. dim objSubFolder '子文件夹对象 
  27. dim objFiles '文件集合 
  28. dim objFile '文件对象 
  29. dim objStream 
  30. dim pathname,TextStream,pp,Xfolder,Xfpath,Xfile,Xpath,Xstream 
  31.  
  32. set fso=server.CreateObject("scripting.filesystemobject") 
  33. set objFolder=fso.GetFolder(path)'创建文件夹对象 
  34.  
  35. Response.Write path 
  36. Response.flush 
  37.  
  38. Set doc = Server.CreateObject("MSxml2.DOMDocument") 
  39. doc.load Server.MapPath("data.xml") 
  40. doc.async=false 
  41.  
  42. '写入每个文件夹路径 
  43. set Xfolder = doc.SelectSingleNode("//z-blog").AppendChild(doc.CreateElement("folder")) 
  44. Set Xfpath = Xfolder.AppendChild(doc.CreateElement("path")) 
  45. Xfpath.text = replace(path,Cpathname,"") 
  46.  
  47. set objFiles=objFolder.Files 
  48. for each objFile in objFiles 
  49. Response.Write " 
  50. ---" 
  51. pp = path & "" & objFile.name 
  52.  
  53. Response.Write pp & " 
  54. " 
  55. Response.flush 
  56.  
  57. '================================================ 
  58. '写入文件的路径及文件内容 
  59. set Xfile = doc.SelectSingleNode("//z-blog").AppendChild(doc.CreateElement("file")) 
  60.  
  61. Set Xpath = Xfile.AppendChild(doc.CreateElement("path")) 
  62. Xpath.text = replace(pp,Cpathname,"") 
  63.  
  64. '创建文件流读入文件内容,并写入XML文件中 
  65. Set objStream = Server.CreateObject("ADODB.Stream") 
  66. objStream.Type = 1 
  67. objStream.Open() 
  68. objStream.LoadFromFile(pp) 
  69. objStream.position = 0 
  70.  
  71. Set Xstream = Xfile.AppendChild(doc.CreateElement("stream")) 
  72. Xstream.SetAttribute "xmlns:dt","urn:schemas-microsoft-com:datatypes" 
  73. '文件内容采用二制方式存放 
  74. Xstream.dataType = "bin.base64" 
  75. Xstream.nodeTypedValue = objStream.Read() 
  76.  
  77. set objStream=nothing 
  78. set Xpath = nothing 
  79. set Xstream = nothing 
  80. set Xfile = nothing 
  81.  
  82. '================================================ 
  83. next 
  84. Response.Write "<p>" 
  85.  
  86. doc.save server.mappath("data.xml") 
  87. set Xfpath = nothing 
  88. set Xfolder = nothing 
  89. set doc = nothing 
  90.  
  91. '创建的子文件夹对象 
  92. set objSubFolders=objFolder.Subfolders 
  93. '调用递归遍历子文件夹 
  94. for each objSubFolder in objSubFolders 
  95. pathpathname=path + "" + objSubFolder.name 
  96. bianli(pathname) 
  97. next  
  98.  
  99. set objFolder=nothing 
  100. set objSubFolders=nothing 
  101. set fso=nothing 
  102. end function 
  103.  
  104. dim doc,objPI 
  105. '创建一个空的XML文件,为写入文件作准备 
  106. Set doc = Server.CreateObject("MSxml2.DOMDocument") 
  107. doc.async=false 
  108. set objPI = doc.createProcessingInstruction("xml","version='1.0' encoding='UTF-8'") 
  109. doc.insertBefore objPI, doc.childNodes(0) 
  110. doc.appendChild(doc.CreateElement("z-blog")) 
  111. doc.save server.mappath("data.xml") 
  112. set objPI = nothing 
  113. set doc = nothing 
  114. bianli(Cpathname)  
  115. endtime=timer() 
  116. %>  
  117. 页面执行时间:<%=FormatNumber((endtime-startime),3)%>秒 
  118.  
  119. '================================= 
  120. '文件2 
  121. 'install.asp 
  122. '此文件改自z-blog安装文件 
  123. '================================= 
  124. <%@ CODEPAGE=65001 %> 
  125. <% Option Explicit %> 
  126. <% On Error Resume Next %> 
  127. <% Response.Charset="UTF-8" %> 
  128. <html> 
  129. <head> 
  130. <title>文件解包程序</title> 
  131. </head> 
  132. <body> 
  133. <textarea name="content" cols="90" rows="20" style="border:0px;overflow:auto;border-width:0px;width:100%;background-color:#E8F3FF;" scrolling="auto"> 
  134. <% 
  135. Dim strLocalPath 
  136. '得到当前文件夹的物理路径 
  137. strLocalPath=Left(Request.ServerVariables("PATH_TRANSLATED"),InStrRev(Request.ServerVariables("PATH_TRANSLATED"),"")) 
  138.  
  139. Dim strDbPath 
  140. Dim objXmlFile 
  141. Dim objNodeList 
  142. Dim objFSO 
  143. Dim objStream 
  144. Dim i,j 
  145.  
  146. Set objXmlFile = Server.CreateObject("Microsoft.XMLDOM") 
  147. objXmlFile.load(Server.MapPath("data.xml")) 
  148.  
  149. If objXmlFile.readyState=4 Then 
  150. If objXmlFile.parseError.errorCode = 0 Then 
  151.  
  152. Set objNodeList = objXmlFile.documentElement.selectNodes("//folder/path") 
  153. Set objFSO = CreateObject("Scripting.FileSystemObject") 
  154.  
  155. j=objNodeList.length-1 
  156. For i=0 To j 
  157. If objFSO.FolderExists(strLocalPath & objNodeList(i).text)=False Then 
  158. objFSO.CreateFolder(strLocalPath & objNodeList(i).text) 
  159. End If 
  160. Response.Write "创建目录" & objNodeList(i).text & vbCrlf 
  161. Response.Flush 
  162. Next 
  163.  
  164. Set objNodeList = objXmlFile.documentElement.selectNodes("//file/path") 
  165.  
  166. j=objNodeList.length-1 
  167. For i=0 To j 
  168. Set objStream = CreateObject("ADODB.Stream") 
  169. With objStream 
  170. .Type = 1 
  171. .Open 
  172. .Write objNodeList(i).nextSibling.nodeTypedvalue 
  173. .SaveToFile strLocalPath & objNodeList(i).text,2 
  174. Response.Write "释放文件" & objNodeList(i).text & vbCrlf 
  175. Response.Flush 
  176. .Close 
  177. End With 
  178. Set objStream = Nothing 
  179. Next 
  180. End If 
  181. End If 
  182. %> 
  183. </textarea> 
  184. <%response.write "<script>alert('文件解包完毕!');</script>"%> 

分享:ASP开发中有用的函数(function)集合(1)
ASP开发中有用的function集合,挺有用处的!希望大家保留! % '************************************* '防止外部提交 '************************************* function ChkPost() dim server_v1,server_v2 chkpost=false server_v1=Cstr(Request.ServerVari

来源:模板无忧//所属分类:ASP教程/更新时间:2012-06-13
相关ASP教程: