首页 > 编程 > ASP > 正文

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

2024-05-04 11:04:27
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表