加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

用ASP实现在线压缩及解压缩功能代码

发布时间:2023-10-05 14:42:39 所属栏目:Asp教程 来源:
导读:先上一个完整代码

001

<!--

002

Name -ASP在线解压,压缩工具

003

copyright -服务器之家(www.zzvips.com)

004

-->

005



006

<%@LANGUAGE="VBSCRIPT" CODEPAGE="
先上一个完整代码
 
001
 
<!--
 
002
 
Name -ASP在线解压,压缩工具
 
003
 
copyright -服务器之家(www.zzvips.com)
 
004
 
-->
 
005
 
 
 
006
 
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
 
007
 
<title>欢迎使用ASP在线解压,压缩工具</title>
 
008
 
<body>
 
009
 
<TABLE border=0 width=80% align=center cellspacing=1 cellpadding=3 style="FONT-FAMILY: Verdana;font-size:14px;BORDER: #000000 1px solid;background-color:#f7f7f7">
 
010
 
<tr>
 
011
 
<th width="100%" height="24" bgcolor="#33CCFF"> </th>
 
012
 
</tr>
 
013
 
<tr>
 
014
 
<td bgcolor="#33CCFF">
 
015
 
<%
 
016
 
Server.ScriptTimeout=99999
 
017
 
Dim winrar,cmddir
 
018
 
Winrar="C:\Program Files\WinRAR\Winrar.exe" '压缩文件(Winrar)的地址
 
019
 
cmddir="%windir%\system32\cmd.exe" 'cmd.exe(命令提示符)的地址
 
020
 
user="csisp" '本程序的用户名
 
021
 
pwd="csisp" '本程序的登陆、压缩、解压缩密码,请大家务必修改(至少8位以上的组合密码才够安全!)
 
022
 
 
 
023
 
if request.Form("user")=user and request.Form("pwd")=pwd then
 
024
 
response.write "本文件夹路径:"&Server.Mappath(".")&"<br>"
 
025
 
from=request.Form("from")
 
026
 
where=request.Form("where")
 
027
 
if from<>"" and where<>"" then
 
028
 
 Dim a,b,Shell,Runing,Runcode,Cmd
 
029
 
 if instr(where,":")=0 then a=Server.mappath(""&where&"") else a=where
 
030
 
 if instr(from,":")=0 then b=Server.mappath(""&from&"") else b=from
 
031
 
 'response.Write b
 
032
 
 if right(b,1)<>"\" and left(right(b,4),1)<>"." then b=b&".rar"
 
033
 
 On Error Resume Next
 
034
 
 Set Shell = Server.CreateObject("WScript.Shell")
 
035
 
 if request.QueryString("action")=1 then '解压缩
 
036
 
 if not ReportFileStatus(b)then Response.Write("没有找到 "&b&"可能不存在!"):Response.End()
 
037
 
 Runing= cmddir&" /c """&winrar&""" x -ibck -t -y -o+ -p"&pwd&" " '设置运行解压缩的命令。
 
038
 
 Cmd=Runing&b&" "&a&"\"
 
039
 
 elseif request.QueryString("action")=0 then '压缩文件
 
040
 
 if (not ReportFileStatus(a)) and (not ReportFolderStatus(a)) then Response.Write("没有找到 "&a&"可能不存在!"):Response.End()
 
041
 
 Cmd= cmddir&" /c del /f /q "&b
 
042
 
 Runcode = Shell.Run(Cmd,1,True)
 
043
 
 Runing= cmddir&" /c """&winrar&""" a -ibck -y -ep -o+ -p"&pwd&" " '压缩。
 
044
 
 Cmd=Runing&b&" "&a
 
045
 
 else '删除文件
 
046
 
 Cmd= cmddir&" /c del /f /q "&b
 
047
 
 end if
 
048
 
 
 
049
 
 Runcode = Shell.Run(Cmd,1,True)
 
050
 
 Runing = Shell.Run(cmddir&" /c taskkill /im winrar.exe",1,false)
 
051
 
 Runing = Shell.Run(cmddir&" /c exit",1,false)
 
052
 
 Set Shell=nothing
 
053
 
 ErrInfo
 
054
 
%>
 
055
 
<%else%>
 
056
 
 
 
057
 
<form name="frm" method="post" action="?action=1" style="BORDER: #d9d9d9 1px solid;background-color:#f7f7f7">
 
058
 
--------------------------------------<strong>解压缩文件</strong>---------------------------------------
 
059
 
<br>
 
060
 
<br>
 
061
 
请输入rar压缩文件地址:
 
062
 
<input name="from" value="1.rar" size="50"><br>
 
063
 
解压到:<input name="where" value="." size="50">
 
064
 
文件夹请使用绝对路径且在最后加 "\" <br>
 
065
 
<br>
 
066
 
<input name="submit" type="submit" value=" 解 压 "><input type="hidden" name="user" value="<%=request.Form("user")%>">
 
067
 
<input type="hidden" name="pwd" value="<%=request.Form("pwd")%>">
 
068
 
</FORM>
 
069
 
<form name="frm" method="post" action="?action=0" style="BORDER: #d9d9d9 1px solid;background-color:#f7f7f7">
 
070
 
--------------------------------------<strong>压缩文件</strong>---------------------------------------<br>
 
071
 
<br>
 
072
 
请在此输入您要压缩文件地址:
 
073
 
<input name="where" value="./data/dvbbs7#.mdb" size="50">
 
074
 
您也可以输入文件夹<br>
 
075
 
<br>
 
076
 
存放路径及新文件名:<input name="from" value="../data/1.rar" size="50">
 
077
 
自动覆盖同名文件<br>
 
078
 
<br>
 
079
 
<input name="submit" type="submit" value=" 压 缩 "><input type="hidden" name="user" value="<%=request.Form("user")%>">
 
080
 
<input type="hidden" name="pwd" value="<%=request.Form("pwd")%>"></FORM>
 
081
 
<%
 
082
 
ErrInfo
 
083
 
end if
 
084
 
else
 
085
 
login()
 
086
 
end if
 
087
 
 
 
088
 
Sub ErrInfo
 
089
 
 if not isempty(Runcode) and Runcode=0 Then
 
090
 
 Response.Write("操作成功执行,您提交的操作如下:<br>"& Cmd)
 
091
 
 elseif not isempty(Runcode) then
 
092
 
 Response.Write("操作执行失败!可能您的权限不够或者该程序无法在DOS(命令提示符)下运行,您提交的操作如下:<br>" & Cmd)
 
093
 
 else
 
094
 
 end if
 
095
 
 If Err Then
 
096
 
      Response.Write "<br>"&err.description
 
097
 
        err.Clear
 
098
 
 End If
 
099
 
%>
 
100
 
<form name="frm" method="post" action="?action=2" style="BORDER: #d9d9d9 1px solid;background-color:#f7f7f7">
 
101
 
--------------------------------------<strong>删除文件</strong>---------------------------------------<br>
 
102
 
<br>
 
103
 
请输入要删除文件地址:<input name="from" size="50" value=<%=from%>>
 
104
 
文件夹请使用绝对路径且在最后加“\” <br>
 
105
 
<input type="hidden" name="where" value=<%if where<>"" then response.Write where else response.Write "."%>>
 
106
 
<br>
 
107
 
<input name="submit" type="submit" value=" 删 除 ">
 
108
 
<input type="hidden" name="user" value="<%=request.Form("user")%>">
 
109
 
<input type="hidden" name="pwd" value="<%=request.Form("pwd")%>">
 
110
 
</FORM>
 
111
 
<br>
 
112
 
<%
 
113
 
End Sub
 
114
 
Function ReportFileStatus(filespec)
 
115
 
 Dim fso
 
116
 
 Set fso = CreateObject("Scripting.FileSystemObject")
 
117
 
 ReportFileStatus=false
 
118
 
 If (fso.FileExists(filespec)) Then ReportFileStatus = true
 
119
 
 Set fso =nothing
 
120
 
End Function
 
121
 
Function ReportFolderStatus(fldr)
 
122
 
 Dim fso
 
123
 
 Set fso = CreateObject("Scripting.FileSystemObject")
 
124
 
 ReportFolderStatus=false
 
125
 
 If (fso.FolderExists(fldr)) Then ReportFolderStatus = true
 
126
 
 Set fso =nothing
 
127
 
End Function
 
128
 
Sub login()
 
129
 
%>
 
130
 
<form name="frm" method="post" action="?action=2" style="BORDER: #d9d9d9 1px solid;background-color:#f7f7f7">
 
131
 
 <p>--------------------------------------<strong>登陆系统</strong>---------------------------------------<br>
 
132
 
  <br>
 
133
 
用户名:
 
134
 
<input name="user" value="csisp">
 
135
 
 </p>
 
136
 
密 码:
 
137
 
  <input name="pwd" type="password" id="pwd">
 
138
 
  <br>
 
139
 
 <br>
 
140
 
 <input name="submit" type="submit" value=" 登陆 ">
 
141
 
</FORM>
 
142
 
<%End sub%>
 
143
 
</td>
 
144
 
</tr>
 
145
 
 
 
146
 
<tr>
 
147
 
 <td height="22" align="center" bgcolor="#FFFFFF"> Copyright ©2008  <a href="//www.zzvips.com">服务器之家</a></td>
 
148
 
</tr>
 
149
 
</table>
 
150
 
</body>
 
使用方法:
 
1.直接上传到服务器上(虚拟主机)的任何目录下(最好是根目录)
 
2.用浏览器访问Winrar.asp文件地址
 
3.输入帐号和密码 (默认帐号: csisp 默认密码: csisp)
 
4.输入Winrar文件的地址(*.RAR) 确认后即可解压
 
5.输入您想压缩文件的地址,确认后即可压缩!
 
特别提示: 文件地址是本Winrar系统的相对地址!
 
使用本程序的服务器必须连安装了WinRar (一般的服务器都安装)
 
本程序的默认程序地址适合99%以上的服务器(虚拟主机)
 
如果地址不对,可以自己修改,地址为您安装WINRAR的地址(虚拟主机使用者请联系您虚拟主机的客服)
 
下面一些细节说明与补充
 
一、问题的提出
 
  随着互连网的发展,网站的数量以惊人的数字增加。网站的作用除了给广大网友们提供信息资讯服务外,还应该成为网友们上传与下载文件的场所。在上传与下载文件的过程中,传输时间是关键,这就要求有较快的传输速度。在传输速度固定不变或是上下变动不大的情况下,尽量减小传输文件的体积,是一个可行的办法:上传文件的时候,先将要上传的文件用WINRAR压缩,上传成功后在网站内通过程序实现解压缩;下载文件的时候,先将要下载的文件在网站内通过程序实现压缩然后再下载。本文就针对该问题的解决进行探讨。
 
二、方法与说明
 
  首先要上传一个WINRAR的解压程序,就是WINRAR自己的解压程序,只需要它的核心程序RAR.EXE这个文件就可以了,在WINRAR的安装目录里可以找到。然后要上传一个执行RAR.EXE的程序 CMD.EXE 这个是WINDOWS操作系统里的程序,在系统盘WINNT/SYSTEM32文件夹中可以找到。上传完这两个文件后,就需要编写一些程序代码来实现压缩与解压缩。
 
  不妨将实现压缩功能的文件取名为ZIP.ASP,实现解压缩功能的文件取名为UNZIP.ASP。
 
  程序代码中包含了WINRAR这个应用程序的命令行语法,下面简单介绍一下:
 
  WinRAR <命令> -<开关1> -<开关N> <压缩文件> <文件...> <@列表文件...> <解压路径/>
 
  命令 要 WinRAR 运行的字符组合代表功能。
 
  开关 切换操作指定类型,压缩强度,压缩文件类型,等等的定义。
 
  压缩文件 要处理的压缩文件名。
 
  文件 要处理的文件名。
 
  列表文件 列表文件是包含要处理文件名称的纯文本。文件名应该在第一卷启动。可以在列表文件中使用//字符后添加注释。例如,你可以包含两列字符串创建 backup.lst:c:/work/doc/*.txt //备份文本文档 c:/work/image/*.bmp //备份图片c:/work/misc并接着运行: winrar a backup @backup.lst你可以在命令行中同时指定普通的文件名和列表文件名。
 
  解压路径 只与命令 e 和 x ,搭配使用。指出解压文件添加的位置。如果文件夹不存在时,会自动创建。
 
  字母命令列表:
 
 
 
a 添加文件到压缩文件 c 添加压缩文件注释
 
  d 从压缩文件删除文件 e 从压缩文件解压压缩,忽略路径
 
  f 刷新压缩文件中的文件 i 在压缩文件中查找字符串
 
  k 锁定压缩文件 m 移动文件和文件夹到压缩文件
 
  r 修复受损的压缩文件 rc 重建丢失的卷
 
  rn 重命名压缩文件 rr[N] 添加数据恢复记录
 
  rv[N] 创建恢复卷 s[name] 转换压缩文件成为自解压文件类型
 
  s- 删除自解压模块 t 测试压缩文件
 
  u 从压缩文件中更新文件 x 以完整路径名称从压缩文件解压压缩
 
 
 
其实程序代码中的关键之处就是用Server.CreateObject("Wscript.Shell")来执行CMD.EXE,CMD.EXE运行RAR.EXE通过WINRAR的命令来执行解压缩文件与压缩文件的。
 
三、程序清单
 
ZIP.ASP程序清单:
 
01
 
<%
 
02
 
'main文件夹中包含cmd.exe rar.exe 例如:要压缩的文件(*.mdb)
 
03
 
'压缩后的存放目录为main/data.rar
 
04
 
on error resume next
 
05
 
unzip_path=Server.mappath("main")&"/"
 
06
 
Set WshShell = server.CreateObject("Wscript.Shell")
 
07
 
IsSuccess = WshShell.Run ("winrar a "&unzip_path&"data
 
08
 
"&unzip_path&"*.mdb",1, False)
 
09
 
'WinRAR <命令> -<开关1> -<开关N> <压缩文件> <文件...> <@列表文件...>
 
10
 
<解压路径/>
 
11
 
'命令: A - 添加到压缩文件中
 
12
 
if IsSuccess = 0 Then
 
13
 
Response.write " 命令成功执行!"
 
14
 
else
 
15
 
Response.write " 命令执行失败!权限不够或者该程序无法运行"
 
16
 
end if
 
17
 
if err.number <> 0 then
 
18
 
Response.Write "<p>错误号码:" & Err.number
 
19
 
Response.Write "<p>原因:" & Err.description
 
20
 
Response.Write "<p>错误来源:" & Err.Source
 
21
 
Response.Write
 
22
 
end if
 
23
 
%>
 
UNZIP.ASP程序清单:
 
01
 
<%
 
02
 
'main文件夹中包含cmd.exe rar.exe 要解压缩的文件(*.rar)
 
03
 
'解压缩后的存放目录为main
 
04
 
on error resume next
 
05
 
unzip_path=Server.mappath("main")&"/"
 
06
 
Set WshShell = server.CreateObject("Wscript.Shell")
 
07
 
IsSuccess = WshShell.Run ("winrar x -r -o+ "&unzip_path&"*.rar
 
08
 
"&unzip_path&"",1, False)
 
09
 
'WinRAR <命令> -<开关1> -<开关N> <压缩文件> <文件...> <@列表文件...>
 
10
 
<解压路径/>
 
11
 
'命令: X - 从压缩文件中全路径解压文件
 
12
 
'开关: -R - 连同子文件夹
 
13
 
'开关: -O+ - 覆盖已经存在的文件
 
14
 
'开关: -O- - 不覆盖已经存在的文件
 
15
 
if IsSuccess = 0 Then
 
16
 
Response.write " 命令成功执行!"
 
17
 
else
 
18
 
Response.write " 命令执行失败!权限不够或者该程序无法运行"
 
19
 
end if
 
20
 
if err.number <> 0 then
 
21
 
Response.Write "<p>错误号码:" & Err.number
 
22
 
Response.Write "<p>原因:" & Err.description
 
23
 
Response.Write "<p>错误来源:" & Err.Source
 
24
 
Response.Write
 
25
 
end if
 
26
 
%>
 
四、 结论
 
  本文通过使用RAR.EXE和 CMD.EXE这两个文件,在ASP编程中实现在线压缩与解压缩网站中的文件的功能。实现方法简单,程序代码少,可供实用编程时借鉴使用。尤其是在拥有自己的服务器的情况下极其实用和方便。以上程序在Windows2000Sever及IIS5.0下运行通过。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章