ASP在线解压zip文件以及采集gzip压缩的页面的方法

[ 2008-07-06 18:58:08 | 作者: {$author:name$} ]  编辑  删除
字体大小: | |
由于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;
}


---------------7月7日 夜 再备注
以上代码仅提供一个思路,具体使用的时候还是会遇到很多问题。
我刚才在使用的时候才发现我采集的一个站点并没有全站Gzip,有些页面又没有使用GZip,为此我在unzip的时候又进行了判断,如果不是合法的zip文件则仅进行读取。
为此我又想到,我们可以写一个通用的采集函数,先保存为zip文件,再判断是不是zip文件,如果不是则直接读取,如果是则解压后读取。
总言之,一切须灵活运用。
当你使用以上代码解压失败的时候不妨使用文本编辑器打开看看

感谢Zx.asd鬼仔
评论Feed 评论Feed: http://ifisker.com/blog/feed.asp?q=comment&id=1116
UTF-8 Encoding 引用链接: loading...

浏览模式: 显示全部 |评论: 1 |引用: 0 | 排序 | 浏览: 0
引用 西欧奥胖子*
[ 2008-07-18 18:35:24 ]  编辑  删除
ASP有软件可直接解压是。还这么麻烦啊。呵呵。郁闷<br />

发表评论
表情图标
[smile][confused][cool][cry]
[eek][angry][wink][sweat]
[lol][stun][razz][redface]
[rolleyes][sad][yes][no]
[heart][star][music][idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:   注册?
验证码* 请输入验证码