由於winrar的命令行工具不支持zip格式的文件,所以我選擇了7z的命令行工具7za.exe,在百度搜索下就可以找到
在使用下面的代碼前把cmd.exe(windows文件夾下有)和7za.exe拷貝到asp程序目錄
代碼(JScript格式)
時間關系,並沒有寫更多的容錯以及返回值問題
function unZip(file){
//在線解壓zip函數
//by fisker (http://ifisker.com lionkay@gmail.com)
var objFso=Server.CreateObject("scripting.FileSystemObject");
var objWshShell=Server.CreateObject("Wscript.Shell");
var zipFile=Server.MapPath(file);
if(!objFso.FileExists(zipFile)) return false;
var runcmd=Server.MapPath("cmd.exe")+" /c "+Server.MapPath("7za.exe")+" x "+zipFile+" -y -o"+Server.MapPath("./");
var RetCode = objWshShell.Run(runcmd,1,true);
if(RetCode!=0)return false;
delete objWshShell;
delete objFso;
}
關於gzip壓縮頁面的問題
思路:用ServerXMLHTTP組件下載頁面,保存為*.zip文件,解壓文件,讀取文件
代碼(JScript格式)
function getGzipPage(url){
//Gzip格式頁面采集程序
//by fisker (http://ifisker.com lionkay@gmail.com)
var fileStream;
var xmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP");
xmlHttp.open("GET",url,false);
xmlHttp.send(null);
fileStream=xmlHttp.responseBody;
delete xmlHttp;
var objStream = Server.CreateObject("ADOD"+"B.Stream");
objStream.Type = 1;
objStream.Open();
objStream.write(fileStream);
objStream.SaveToFile(Server.MapPath("tmp.html.zip"),2);
objStream.Flush();
objStream.Close();
delete objStream;
unZip("tmp.html.zip");
var str=ReadFile("tmp.html");//ReadFile,deleteFile就是簡單的文本讀取和文件刪除函數,未附代碼
deleteFile("tmp.html.zip");
deleteFile("tmp.html");
return str;
}
作者:fisker