`
xieye
  • 浏览: 838820 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php关于zip的使用

    博客分类:
  • PHP
 
阅读更多
/**
	 * 
	 * 创建压缩包
	 * @param array $arr 需要压缩的文件部分路径和文件名,形如 array(
	 *   '/file/upload/1.php',
	 *   '/file/upload/2011/1.jpg',
	 * )
	 * 
	 * @return string 压缩包的部分路径和文件名,形如/file/uplaod/zip/123.zip
	 */
	public static function zip($arr)
	{
	    //首先我建立一个目录
	    $save_path = '/file/upload/zip' . Dat::getHourPath();
	    $path = APPLICATION_PATH . '/destoon' . $save_path;
	    Sys::createDir($path);
	    
	    $zipname = strval(time()) . mt_rand(100000, 999999) . '.zip';
	    $zip_fullname = $path . '/' . $zipname;
	    $zip_obj = new ZipArchive();
        if ($zip_obj->open($zip_fullname, ZIPARCHIVE::CREATE) !== true) { 
            return false; 
        } 
        foreach ($arr as $value) { 
        //  $zip->addFile($path, mb_convert_encoding ( basename($path), 'GBK'  ,'UTF-8')); 
            $zip_obj->addFile( APPLICATION_PATH . '/destoon' . $value, basename($value) ); 
        } 
        $zip_obj->close();
        return $save_path . '/' . $zipname;
	    
	}
	
	/**
	 * 解压缩
	 * 
	 * @param string $zipname 压缩包的部分路径和文件名,形如'/file/upload/1.zip'
	 * @param string $path 解压后的文件夹全路径
	 * 
     * @return array 解压后的文件数组,部分路径和文件名,形如array(
     *     '/file/1.php',
     *     '/file/12.png',
     * )
	 */
	public static function unzip($zipname , $path='')
	{
	    if (!$path ) {
	        $path = '/file/tempzip_folder/' .
               strval(time()) . mt_rand(100000, 999999);
	    
            $newpath = APPLICATION_PATH . '/destoon' . $path; 
	    }
	    else {
	        $newpath = $path;
	        $path = preg_replace('#^.+/destoon(.+)$#', '$1', $newpath);
	    }
	    
        Sys::createDir($newpath);
            
        $filename = APPLICATION_PATH . '/destoon' . $zipname;
        //第一件事是解压
        $zip = new ZipArchive();
        $arr = array();
        if ($zip->open($filename) === true) {
            $zip->extractTo($newpath);
            $zip->close();
            
            $temp = scandir($newpath);
            foreach ($temp as $value) {
                if ($value != '.' && $value != '..') {
                    $arr[] = $path . '/' . basename($value);
                }
            }
        }
        return $arr;
	    
	}
	
	
	
分享到:
评论

相关推荐

    php生成zip压缩文件

    例如,可以使用`shell_exec()`函数调用系统命令(如`zip`命令行工具)来创建ZIP,或者使用第三方库如PHPZip(https://github.com/Spipu/PhpZip)来提供更多高级功能,如支持读取流、加密等。 总的来说,PHP生成ZIP...

    php文件压缩之PHPZip类.zip

    介绍了php文件压缩之PHPZip类用法,实例分析了PHPZip类的定义与相关使用技巧 要使用该PHP扩展类,需要(PHP 5 >= 5.2.0, PECL zip >= 1.1.0),部分方法需要 PHP 5.2. ,且php.ini配置支持zip  对于win系统,直接...

    bt宝塔面板php7.3、php7.4不支持ZipArchive解决方法

    宝塔面板php7.3版本不支持ZipArchive导致程序无法后台直接更新的解决方法 在SSH命令行界面执行以下语句: cd /www/server/php/73/src/ext/zip/ /www/server/php/73/bin/phpize ./configure –with-...

    php文件压缩之PHPZip类

    介绍了php文件压缩之PHPZip类用法,实例分析了PHPZip类的定义与相关使用技巧 要使用该PHP扩展类,需要(PHP 5 >= 5.2.0, PECL zip >= 1.1.0),部分方法需要 PHP 5.2.+,且php.ini配置支持zip 对于win系统,直接去掉...

    phpzip 服务器解压ZIP包利器

    接下来,我们探讨一下phpzip的主要使用方法。解压ZIP文件是其最基本的应用,你可以通过以下代码实现: ```php use PhpZip\ZipFile; $zip = new ZipFile(); $zip->openFromFile('path_to_your_zip.zip'); $zip->...

    php-8.0.18.zip 包含windows下的php安装包、windows下的运行依赖 和 Linux下的源码包。

    php-8.0.18.zip 包含windows下的php安装包、windows下的运行依赖 和 Linux下的源码包。php-8.0.18.zip 包含windows下的php安装包、windows下的运行依赖 和 Linux下的源码包。php-8.0.18.zip 包含windows下的php...

    在服务器上解zip包的php程序

    zip.class.php zip1.php 不需要zip库的支持,任何地方可用 用法: 把zip 文件比如说foo.zip与这两个文件上传到服务器 然后在地址栏中输入 http://yoursite.com/zip1.php?zipfile=foo.zip 就会把zip文件解压到当前...

    用PHP生成zip文件.

    `ZipArchive`提供了一系列方法,如`open()`, `addFile()`, `close()`等,这些方法在`PHPZip`类中被包装成更易于使用的接口。 下面是一些关键的`PHPZip`方法: 1. **`addDirectory($dirPath, $arcName='')`**:此...

    php生成zip文件类.zip

    使用`ZipArchive::create()`方法可以创建一个新的ZIP文件,然后通过`addFile()`或`addFromString()`方法将文件或字符串内容添加到ZIP文件中。例如: ```php $zip = new ZipArchive(); if ($zip->open('myarchive...

    php在线压缩代码zip

    本文将深入探讨如何使用PHP实现在线压缩代码,以及与ZIP压缩格式相关的技术知识。 首先,我们要理解PHP如何处理文件和目录操作。PHP提供了丰富的文件系统函数,如`scandir()`用于列出目录中的所有文件,`file_put_...

    php_zip.dll

    php_zip,ZipArchive类,用于解决Fatal error: Class 'ZipArchive' not found in ... 先看下你的 php5\ext 这个文件夹下面是否有 php_zip.dll 这个文件,没有的话,可以在此下载! 接下来,我们就是要使php支持这个Zip...

    PHP5.2.0版本的php_zip.dll扩展

    **使用php_zip.dll** 在Windows环境下,如winxp,`php_zip.dll`是一个动态链接库文件,需要将其放到PHP的`ext`目录下,并在php.ini配置文件中启用该扩展。启用方法是在php.ini中取消`extension=php_zip.dll`行的...

    php的zip文件内容比较类.zip

    以下是一些关于如何使用ZipArchive类的基本操作: 1. 打开ZIP文件: ```php $zip = new ZipArchive(); if ($zip->open('path_to_your_zip.zip') === true) { // ZIP文件成功打开 } else { // 错误处理 } ``` 2. ...

    php在线解压ZIP

    下面我们将深入探讨如何使用PHP实现在线解压ZIP文件的功能。 首先,我们需要了解PHP中的`ZipArchive`类。`ZipArchive`是PHP 5.2.0版本引入的一个内置类,专门用于处理ZIP文件。这个类提供了丰富的接口,包括打开、...

    mac php zip 扩展

    cp modules/zip.so /usr/local/php/extensions/zip.so Step 7: Update your PHP.ini Finally we need to tell PHP to load this extension. sudo vim /etc/php.ini Add the following line: extension=...

    PHP_ZIP打包支持

    在使用之前,确保你的PHP环境已经正确地启用了`zip`扩展。如果未启用,你需要在`php.ini`配置文件中取消对`extension=zip`行的注释,或者根据你的系统和PHP版本安装相应的PECL扩展。 `PHP ZIP`扩展的核心类是`Zip...

    php的压缩与解压Zip类.zip

    下面将详细介绍如何使用PHP的ZipArchive类以及这个自定义类可能提供的额外功能。 1. **ZipArchive类的基本使用** - **创建ZIP文件**:通过`new ZipArchive`实例化对象,然后调用`open()`方法创建一个新的ZIP文件或...

    新版的PHPzip!

    - **自动化部署**:在持续集成/持续部署(CI/CD)流程中,可以使用PHPzip打包代码并上传到服务器。 总之,新版的PHPzip为PHP开发者提供了一个强大且易用的工具,使得处理ZIP文件变得更加便捷,无论是日常开发还是复杂...

    php解压zip文件

    在这个场景中,我们关注的是如何使用PHP解压ZIP文件。下面将详细介绍PHP解压ZIP文件的核心知识点,并提供相关的代码示例。 ### PHP ZIP扩展 PHP提供了一个内置的ZIP扩展,名为`ZipArchive`,用于处理ZIP文件。这个...

    php压缩zip文件

    - **添加文件到ZIP**:使用`explode`函数将`$filestr`字符串分割成数组,然后遍历这个数组,使用`$zip->addFile($one_file_name)`将每个文件添加到ZIP文件中。 - **关闭ZIP文件**:最后调用`$zip->close()`关闭ZIP...

Global site tag (gtag.js) - Google Analytics