在上传与下载文件的过程中,传输时间是关键,这就要求有较快的传输速度。在传输速度固定不变或是上下变动不大的情况下,尽量减小传输文件的体积,是一个可行的办法:上传文件的时候,先将要上传的文件用WINRAR压缩,上传成功后在网站内通过程序实现解压缩;下载文件的时候,先将要下载的文件在网站内通过程序实现压缩然后再下载程序代码中的关键之处就是用Server.CreateObject("Wscript.Shell")来执行CMD.EXE,CMD.EXE运行RAR.EXE通过WINRAR的命令来执行解压缩文件与压缩文件的。所以要使用此功能,需要开启相关组件!


程序清单
asp压缩代码
ZIP.ASP程序清单:
<%
'main文件夹中包含cmd.exe rar.exe 例如:要压缩的文件(*.mdb)
'压缩后的存放目录为maindata.raron error resume next
unzip_path=Server.mappath("main")&""
Set WshShell = server.CreateObject("Wscript.Shell")
IsSuccess = WshShell.Run ("winrar a "&unzip_path&"data
"&unzip_path&"*.mdb",1, False)
'WinRAR <命令> -<开关1> -<开关N> <压缩文件> <文件...> <@列表文件...>
 <解压路径>
'命令: A - 添加到压缩文件中if IsSuccess = 0 Then
Response.write " 命令成功执行!"    'asp压缩成功提示
else
Response.write " 命令执行失败!权限不够或者该程序无法运行"    'asp压缩权限报错
end if
if err.number <> 0 then
Response.Write "<p>错误号码:" & Err.number    'asp压缩报错
Response.Write "<p>原因:" & Err.description    'asp压缩报错
Response.Write "<p>错误来源:" & Err.Source    'asp压缩报错
Response.Write
end if
%>


asp解压代码
UNZIP.ASP程序清单:
<%
'main文件夹中包含cmd.exe rar.exe 要解压缩的文件(*.rar)
 '解压缩后的存放目录为mainon error resume next
unzip_path=Server.mappath("main")&""
Set WshShell = server.CreateObject("Wscript.Shell")
IsSuccess = WshShell.Run ("winrar x -r -o+ "&unzip_path&"*.rar
"&unzip_path&"",1, False)
'WinRAR <命令> -<开关1> -<开关N> <压缩文件> <文件...> <@列表文件...>
 <解压路径>
'命令: X - 从压缩文件中全路径解压文件
'开关: -R - 连同子文件夹
'开关: -O+ - 覆盖已经存在的文件
'开关: -O- - 不覆盖已经存在的文件
if IsSuccess = 0 Then
Response.write " 命令成功执行!"    'asp解压成功提示
else
Response.write " 命令执行失败!权限不够或者该程序无法运行"    'asp解压权限报错
end if
if err.number <> 0 then
Response.Write "<p>错误号码:" & Err.number    'asp解压报错
Response.Write "<p>原因:" & Err.description    'asp解压报错
Response.Write "<p>错误来源:" & Err.Source    'asp解压报错
Response.Write
end if
%>
  

      本文通过使用RAR.EXE和 CMD.EXE这两个文件,在ASP编程中实现在线压缩与解压缩网站中的文件的功能。实现方法简单,程序代码少,可供实用编程时借鉴使用。尤其是在拥有自己的服务器的情况下极其实用和方便。以上程序在Windows2000Sever及IIS5.0下运行通过。