찾다
php教程php手册php ZipArchive压缩函数详解实例

用ZipArchive压缩文件,这个是php的扩展类,自php5.2版本以后就已经支持这个扩展,如果你在使用的时候出现错误,查看下php.ini里面的extension=php_zip.dll前面的分号有没有去掉,然后再重启Apache这样才能使用这个类库。
例1、生成zip 压缩文件

复制代码 代码如下:


/* 生成zip 压缩文件 */
function create_zip($files = array(),$destination = '',$overwrite = false) {
    //if the zip file already exists and overwrite is false, return false
    if(file_exists($destination) && !$overwrite) { return false; }
    //vars
    $valid_files = array();
    //if files were passed in...
    if(is_array($files)) {
        //cycle through each file
        foreach($files as $file) {
            //make sure the file exists
            if(file_exists($file)) {
                $valid_files[] = $file;
            }
        }
    }
    //if we have good files...
    if(count($valid_files)) {
        //create the archive
        $zip = new ZipArchive();
        if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
            return false;
        }
        //add the files
        foreach($valid_files as $file) {
            $file_info_arr= pathinfo($file);
            $zip->addFile($file,$file_info_arr['basename']);//去掉层级目录
        }
        //debug
        //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;

        //close the zip -- done!
        $zip->close();

        //check to make sure the file exists
        return file_exists($destination);
    }
    else
    {
        return false;
    }
}

define('ROOTPATH',dirname ( __FILE__ )); //网站路径

$files_to_zip = array(
    ROOTPATH.DIRECTORY_SEPARATOR.'PHP+jQuery+Cookbook.pdf',
    ROOTPATH.DIRECTORY_SEPARATOR.'TurboListerZeroTemplate.csv'
);
//if true, good; if false, zip creation failed
$filename='my-archive.zip';
$result = create_zip($files_to_zip,$filename);
 


例2 、压缩文件夹下面的所有文

复制代码 代码如下:


/*
php zip压缩文件夹下面的所有文件
*/
class HZip
{
  /**
   * 添加文件和子目录的文件到zip文件
   * @param string $folder
   * @param ZipArchive $zipFile
   * @param int $exclusiveLength Number of text to be exclusived from the file path.
   */
  private static function folderToZip($folder, &$zipFile, $exclusiveLength) {
    $handle = opendir($folder);
    while (false !== $f = readdir($handle)) {
      if ($f != '.' && $f != '..') {
        $filePath = "$folder/$f";
        // Remove prefix from file path before add to zip.
        $localPath = substr($filePath, $exclusiveLength);
        if (is_file($filePath)) {
          $zipFile->addFile($filePath, $localPath);
        } elseif (is_dir($filePath)) {
          // 添加子文件夹
          $zipFile->addEmptyDir($localPath);
          self::folderToZip($filePath, $zipFile, $exclusiveLength);
        }
      }
    }
    closedir($handle);
  }

  /**
   * Zip a folder (include itself).
   * Usage:
   *   HZip::zipDir('/path/to/sourceDir', '/path/to/out.zip');
   *
   * @param string $sourcePath Path of directory to be zip.
   * @param string $outZipPath Path of output zip file.
   */
  public static function zipDir($sourcePath, $outZipPath)
  {
    $pathInfo = pathInfo($sourcePath);
    $parentPath = $pathInfo['dirname'];
    $dirName = $pathInfo['basename'];
    $sourcePath=$parentPath.'/'.$dirName;//防止传递'folder' 文件夹产生bug
    $z = new ZipArchive();
    $z->open($outZipPath, ZIPARCHIVE::CREATE);//建立zip文件
    $z->addEmptyDir($dirName);//建立文件夹
    self::folderToZip($sourcePath, $z, strlen("$parentPath/"));
    $z->close();
  }
}

//使用方法
HZip::zipDir('yourlife', 'yourlife.zip');
?>
 

1.ZipArchive::addEmptyDir
添加一个新的文件目录
2.ZipArchive::addFile
将文件添加到指定zip压缩包中。
3.ZipArchive::addFromString
添加的文件同时将内容添加进去
4.ZipArchive::close
关闭ziparchive
5.ZipArchive::extractTo
将压缩包解压
6.ZipArchive::open
打开一个zip压缩包
7.ZipArchive::getStatusString
返回压缩时的状态内容,包括错误信息,压缩信息等等
8.ZipArchive::deleteIndex
删除压缩包中的某一个文件,如:deleteIndex(0)删除第一个文件
9.ZipArchive::deleteName
删除压缩包中的某一个文件名称,同时也将文件删除。

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
HTML 文件压缩成 ZIP 的最佳指南HTML 文件压缩成 ZIP 的最佳指南Apr 09, 2024 pm 04:09 PM

压缩HTML文件成ZIP可提高页面加载速度。方法包括:使用在线工具(如FileOptimizer、TinyPNG)使用命令行工具(如gzip、7-zip)使用Node.js脚本(使用zlib模块)

linux压缩zip命令怎么用linux压缩zip命令怎么用Oct 08, 2023 pm 01:25 PM

zip命令是Linux系统中一个非常有用的压缩工具。通过使用zip命令,您可以轻松地将文件和目录压缩成一个zip文件,并节省存储空间和方便传输。zip命令的基本语法为“zip [选项] [压缩文件名] [要压缩的文件或目录]”。

centos7下解压文件命令(zip)详解centos7下解压文件命令(zip)详解Jan 07, 2024 pm 06:30 PM

1.压缩文件夹为zip文件[root@cgls]#zip-rmydata.zipmydata2.把mydata.zip解压到mydatabak目录里面[root@cgls]#unzipmydata.zip-dmydatabak3.mydata01文件夹和mydata02.txt压缩成为mydata.zip[root@cgls]#zipmydata.zipmydata01mydata02.txt4.直接解压mydata.zip文件[root@cgls]#unzipmydata.zip5.查看myd

7z和zip哪个无损7z和zip哪个无损Jan 19, 2021 pm 06:37 PM

7z和zip都是无损压缩。7z是一种主流高效的压缩格式,它拥有极高的压缩比;ZIP文件格式是一种数据压缩和文档储存的文件格式。7z压缩比率大些,zip次之;zip格式比较常见支技泛围广,windows操作系统默认支持zip格式。

如何使用Java中的Zip函数进行文件压缩如何使用Java中的Zip函数进行文件压缩Jun 26, 2023 pm 02:10 PM

压缩文件是一种常见的操作,能够节省磁盘的空间以及网络传输的时间,而Java中提供了Zip函数用于实现文件的压缩。本文将通过详细的介绍和实例演示来展示如何使用Java中的Zip函数进行文件压缩。一、Zip函数介绍Zip函数是Java中提供的压缩和打包工具类库,使用该函数可以将文件或文件夹压缩成一个Zip格式的文件。Zip函数中主要使用了ZipOutputStr

轻松掌握 HTML 文件 ZIP 压缩秘诀轻松掌握 HTML 文件 ZIP 压缩秘诀Apr 09, 2024 pm 05:36 PM

HTML文件ZIP压缩可以通过Python的zipfile模块实现:创建ZIP文件对象。向ZIP文件添加HTML文件。关闭ZIP文件对象。

Java如何实现解析zip压缩包并获取文件内容Java如何实现解析zip压缩包并获取文件内容May 18, 2023 am 11:34 AM

功能描述页面上传一个源码压缩包,后端将压缩包解压,并获取每个文件中的内容。相关源码(1)首先定义一个与解压文件对应的实体类。packagecom.sonar.data.vo;importlombok.Data;/***文件解析对象**@authorYuanqiang.Zhang*@since2022/7/12*/@DatapublicclassUnzipFileVo{/***类型:0-文件夹;1-文件*/privateIntegertype;/***文件路径(如:src/main/java/co

win8系统里边zip是什么含意win8系统里边zip是什么含意Jul 18, 2023 pm 03:01 PM

win8系统常常必须缩小,解压文件,平常生活中常常会触碰的.以前大家都务必先下载一个解压专用工具,zip便是这其中的一种解压格式,今日详尽的跟各位说说win8系统里边zip是什么含意.win8系统里边zip是什么意思:在很久以前,微软就在Windows系统中集成化了Zip缩小适用,客户不用安裝第三方的压缩工具就可以缩小或是解压缩Zip格式的文件。1.最先是缩小文件,大家时常会把一类有关系的文件允许梳理到一起,这时候再打个包就能方便管理并且容积也会缩小。选定大家要想装包的文件,还可以是好几个文件,

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.