PHP在线解压zip文件

<?php
/**
 * php zip文件解压库
 */
$temp='zip';   //将要解压到的目录,会自行创建
$unzip='unzip.zip';  //和本文件在同一目录的压缩文件名

class unzip{
    public $file;       //解压的文件名
    public $dist;       //解压的目录
    public function __construct($file,$dist)
    {
        if( !$file || !$dist ) throw new ErrorException('参数不能为空');
        $this->file = $file;
        $this->dist = $dist;
    }
    /**
     * 解压zip文件
     * @param $file zip文件
     * @param $dist 解压的目录
     */
    function index(){
        if(!class_exists('ZipArchive')) throw new ErrorException('ZipArchive:扩展不存在');
        $zip = new ZipArchive();
        $openRes = $zip->open($this->file);
        if( $openRes === true) {
            $stime = $this->formatMicotime(microtime()); //
            $res = $zip->extractTo($this->dist);
            $etime = $this->formatMicotime(microtime());
            if( $res ) {
                throw new ErrorException('解压成功,总花费:'.round($etime-$stime,2).'S');
            }
            $zip->close();
        } else {
            throw new ErrorException('zip文件打开失败,错误代码:'.$this->zipErrorMsg($openRes));
        }
    }
    /**
     * 错误提示
     * @param $code
     * @return mixed|string
     */
    protected function zipErrorMsg($code){
        $errorCode = array(
            4=>'Seek error',
            5=>' Read error',
            9=>'No such file.',
            10=>'File already exists.',
            11=>'Can\'t open file.',
            14=>'Malloc failure.',
            18=>'Invalid argument.',
            19=>'Not a zip archive.',
            21=>'Zip archive inconsistent',
        );
        return array_key_exists($code,$errorCode) ? $errorCode[$code] : '未知错误';
    }
    /**
     * 格式化时间戳和微秒数
     * @param $microtime
     * @return mixed
     */
    protected function formatMicotime($microtime){
        list($usec,$sec) = explode(' ',$microtime);
        return  $sec+$usec;
    }
}
try{
    //需要解压的文件
    $file = './'.$unzip;
    //解压的目录
    $dist = $temp;
    $zip = new unzip($file,$dist);
    $zip->index();
}catch (Exception $e){
    exit($e->getMessage());
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
文件一个个传,厌烦了吧? 服务器端解压操作说明: 1 用记事本打开 unzip.php ,在第二行,找到 “ $password = "isphp" ” 这一句, 将isphp 改成您的密码,等会解压时会要求输入。 2 将 unzip.php 上传到服务器端某个目录下,比如根目录。 3 运行 unzip.php, 看其给出的提示是否支持 zlib 库, 如果不支持,则在下面一步本地压缩时不要将"压缩成Gzip格式"选中。 4 在本机运行 phpZip.exe, 如果第3步中,unzip.php 提示说不支持zlib库,则不要选中 "压缩成Gzip格式", 否则压缩出的文件,在服务器端没法解压, 反之,如果支持的话,就选中,因为压缩成gz格式,可以大大减小文件大小。 5 运行 unzip.php,将刚才在本机压缩出的文件通过 unzip.php 上传,上传后会自动解压。 (也可以通过其它途径如 FTP 将文件上传到服务器,这样只要指定其位置即可。) ------------------------------------------------------- 服务器端打包下载操作说明 1 用记事本打开 unzip.php ,在第二行,找到 “ $password = "isphp" ” 这一句, 将isphp 改成您的密码,等会解压时会要求输入。 2 运行 zip.php , 输入想下载的目录,程序会给出一个链接, 点此链接(或者通过 FlashGet 一类工具) 就可以下载。 3 在本地运行 phpZip.exe 将下载下来的文件解压就行。 注: 如果想下载整个 zip.php 所在的当前目录,则输入 "." (点号) 即可。 这种情况下,在本地解压时,选择解压目的地时,最好选择一空的文件夹。 因为,当仅打包下载当前目录下的一个子目录时,在本地解压时, 程序会自动创建一个同名的文件夹, 而下载当前整个目录时,程序不会创建文件夹。 ------------------------------------------------------- 删除文件工具 rm.php 功能说明: 因 Unix/Linux 服务器特殊的文件操作权限的设置, 由程序创建的文件文件夹, 不一定能通过 FTP 直接删除, 删除时往往会提示没有权限删除该文件。 所谓,解铃还需系铃人,当程序创建的文件或或文件夹无法删除时, 可用程序来删除。 1 同上面一样,这个程序也要设置密码。 2 运行 rm.php 输出要删除的文件夹或文件名,以及管理密码。就可以了。 注: 当您输入的是文件夹的名字时,程序会递归删除该文件夹内 所有的文件, 一定要慎重!!! ------------------------------------------------------- 低版本 PHP 下使用解压或压缩功能说明 程序附带 的 unzip.php3.phpzip.php3.php 两个文件, 是当服务器的 PHP 版较低(一般低于 4.1 左右, 不一定真的 是 PHP3, 呵呵)时使用。可先不管PHP版本,先就使用 unzip.php 当运行 unzip.php 时发现提交后页面没什么反应, 还是老样子,就可能是 PHP 版过低的缘故。此时可用这两个 文件代替前面说的 unizp.phpzip.php 注: 这两个程序都不带密码验证的功能,也就是说任何人, 只要能访问到此页面,都有可能会上传或下载文件。 请使用完毕,务必将此文件从服务器上删除。 以免造成危害。 ------------------------------------------------------- 各文件功能说明: phpZip.exe 本地压缩或解压的程序 unzip.php 服务器端将压缩后文件解开 zip.php 服务器端将文件夹打包压缩下载 unzip.php3.php 基本与 unzip.php 功能相同,主要用在较低版本的PHPzip.php3.php 基本与 zip.php 功能相同,主要用在较低版本的PHP上 rm.php 脚本删除文件文件夹的工具 phpZipExt.dll 辅助 phpZip 运行的 DLL(没有此DLL程序也可以运行,但不能与Explorer集成) ------------------------------------------------------- 修改记录: 16:25 2003-11-29: 增加 phpZipExt.dll ,使得程序可以与 WinRAR 一样,可以与 Explorer 集成,方便操作。详细说明请看帮助文件。 增加压缩解压时的进度条,使得用户界面更加友好。 14:08 2003-11-30 修改 phpZip.exe 压缩或解压时一开始选中的目录为要操作文件文件夹相同的目录。 19:43 2004-2-10 增加一个附带文件,rm.php 用来删除服务器上文件文件夹 增加密码验证功能,使之在服务器上会安全一点。 ------------------------------------------------------- 求积分,谢谢啦!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值