当前位置:

首页 > 编程开发 > asp下利用xml打包网站文件

asp下利用xml打包网站文件

将整个网站文件夹打包为一个XML文件,上传至虚拟主机后运行解包程序即可完成部署。核心原理是利用XML存储二进制数据。文件数量多时效率需实际验证,此法适合小文件或简化FTP上传场景。

先说一个挺实用的思路:把整个文件夹打包成一个XML文件,然后配合一个解包脚本,就能把文件原样释放出来。这样一来,你完全可以先把整个网站本地打包好,上传到虚拟主机,再运行解包程序,就部署完成了。我在本地测试时只选了少量文件,如果文件数量很多,执行效率如何?这个问题值得实际验证一下。

其实实现原理并不复杂,核心就是利用XML文件可以存储二进制数据这一特性。下面直接上代码,先看解包程序,再看打包程序。

解包文件

复制代码

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Option Explicit %>
<% On Error Resume Next %>
<% Response.Charset="UTF-8" %>
<% Server.ScriptTimeout=99999999 %>




文件解包程序


<%
Dim strLocalPath
'得到当前文件夹的物理路径
strLocalPath=Left(Request.ServerVariables("PATH_TRANSLATED"),InStrRev(Request.ServerVariables("PATH_TRANSLATED"),"\"))

Dim objXmlFile
Dim objNodeList
Dim objFSO
Dim objStream
Dim i,j

Set objXmlFile = Server.CreateObject("Microsoft.XMLDOM")
    objXmlFile.load(Server.MapPath("update.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 & "
" Response.Flush 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 .Sa veToFile strLocalPath & objNodeList(i).text,2 Response.Write "释放文件" & objNodeList(i).text & "
" Response.Flush .Close End With Set objStream = Nothing Next Set objNodeList = nothing End If End If Set objXmlFile = Nothing response.write "文件解包完毕" %>

pack.asp 打包文件

复制代码

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Option Explicit %>
<% On Error Resume Next %>
<% Response.Charset="UTF-8" %>
<% Server.ScriptTimeout=99999999 %>




文件打包程序


<%
Dim ZipPathDir,ZipPathFile
Dim startime,endtime
'在此更改要打包文件夹的路径
ZipPathDir = "D:\testasp\dictionary\xmlPacked\scrollColor"'
ZipPathFile = "update.xml"
if right(ZipPathDir,1)<>"\" then ZipPathDir=ZipPathDir&"\"
'开始打包
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&"==========
") 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("//root").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 "---
" PathNameStr = DirPath & "" & objFile.name Response.Write PathNameStr & "" Response.flush '================================================ '写入文件的路径及文件内容 set Xfile = XmlDoc.SelectSingleNode("//root").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 "

" XmlDoc.Sa ve(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("root")) XmlDoc.Sa ve(Server.MapPath(FilePath)) Set Root = Nothing Set XmlDoc = Nothing LoadData(ZipPathDir) '程序结束时间 endtime=timer() response.Write("页面执行时间:" & FormatNumber((endtime-startime),3) & "秒") end sub %>

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发
相关文章 更多
codex安装windows教程桌面版完整安装步骤指南
codex安装windows教程桌面版完整安装步骤指南

详解如何在 Windows 电脑上通过 Microsoft Store 安装 Codex 桌面应用,包括启动登录、切换 Codex 模式、关联本地代码项目及终端环境配置的界面操作指引。

github配置ssh key windows
github配置ssh key windows

本文详解如何在Windows环境中使用PowerShell生成SSH密钥对,配置ssh-agent自动加载私钥,并将公钥安全添加至GitHub账户,最后通过git remote set-url切换为SSH地址,解决每次操作需输入账号密码的问题。

backdrop和background区别
backdrop和background区别

深入解析backdrop与background在网页开发及视觉设计中的区别。通过CSS代码示例,展示如何正确使用background设置元素背景,以及利用backdrop-filter创建弹窗遮罩模糊效果,避免概念混用。

windsurf ide download Windows版安装教程
windsurf ide download Windows版安装教程

详解 Windsurf IDE 在 Windows 系统的下载来源、安装步骤及首次启动界面。指导用户如何导入编辑器设置、打开项目文件夹及使用终端与 AI 功能,适合初次接触该工具的开发者阅读。

ServBay安装配置详细教程与操作指南
ServBay安装配置详细教程与操作指南

新手入门 ServBay 本地开发环境,详解安装包下载、Dashboard 状态监控、Packages 组件安装、Services 服务控制及 Websites 项目配置。掌握 .servbay.config 版本管理与日志排查技巧,快速搭建稳定的 PHP、Node.js 等多语言开发环境。

codekit环境配置指南从安装到环境搭建完整教程
codekit环境配置指南从安装到环境搭建完整教程

详解 CodeKit 在 macOS 下的安装步骤、项目导入方法、Sass与JavaScript编译设置及浏览器自动刷新功能,助您快速搭建高效的前端开发环境。

codex安装windows 命令行完整操作教程
codex安装windows 命令行完整操作教程

详解Windows环境下安装OpenAI Codex CLI的步骤,包括WSL环境检查、Node.js/npm配置、npm全局安装命令及首次启动验证,适合开发者快速上手。

NativeRest环境配置要求与完整操作教程
NativeRest环境配置要求与完整操作教程

学习如何配置 NativeRest REST API 客户端。涵盖 Windows/macOS/Linux 安装后的工作区创建、环境变量管理、请求编辑及响应查看步骤,帮助开发者快速完成基础环境搭建与连通性测试。

CSS设置透明度的注意事项有哪些?opacity属性详解
CSS设置透明度的注意事项有哪些?opacity属性详解

深入解析CSS中设置透明度的核心属性opacity,剖析子元素继承、事件穿透、层叠上下文等关键注意事项,并提供与rgba、hsla的实用选型对比。

flutter页面传值到后台的方法及示例代码
flutter页面传值到后台的方法及示例代码

flutter页面传值到后台的完整实现方法及示例代码,帮助读者快速掌握相关技术要点。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
WPS Office macOS版
WPS Office macOS版
macOS

WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,

Shapr3D macOS版
Shapr3D macOS版
Mac

Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

REAPER macOS版
REAPER macOS版
Mac

REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

WINDOWS 更多
Adobe InDesign Windows版
Adobe InDesign Windows版
Windows

Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator

Adobe Illustrator Windows版
Adobe Illustrator Windows版
Windows

Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。

Adobe Bridge Windows版
Adobe Bridge Windows版
Windows

Adobe Bridge 是 Adobe 推出的创意资产管理工具,可集中预览、分类和查找照片、视频、PDF及多种设计文件,并支持元数据、关键词、评级、批量重命名和格式导出。它可与 Photoshop、Illustrator 等应用衔接,