백엔드 개발 PHP 튜토리얼 php ZipArchive压缩函数详解实例_PHP教程

php ZipArchive压缩函数详解实例_PHP教程

Jul 13, 2016 am 10:25 AM
zip

用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
删除压缩包中的某一个文件名称,同时也将文件删除。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/825095.htmlTechArticle用ZipArchive压缩文件,这个是php的扩展类,自php5.2版本以后就已经支持这个扩展,如果你在使用的时候出现错误,查看下php.ini里面的extensi...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML 파일을 ZIP으로 압축하는 최고의 가이드 HTML 파일을 ZIP으로 압축하는 최고의 가이드 Apr 09, 2024 pm 04:09 PM

HTML 파일을 ZIP으로 압축하면 페이지 로딩 속도가 향상될 수 있습니다. 방법은 다음과 같습니다. 온라인 도구(예: FileOptimizer, TinyPNG) 사용 명령줄 도구(예: gzip, 7-zip) 사용 Node.js 스크립트 사용(zlib 모듈 사용)

리눅스 압축 zip 명령을 사용하는 방법 리눅스 압축 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입니다. mydatabak 디렉터리 [root@cgls]#unzipmydata.zip-dmydatabak3.mydata01 폴더에 mydata.zip의 압축을 풀면 mydata02.txt가 압축됩니다. mydata.zip[root@cgls]#zipmydata.zipmydata01mydata02.txt4. mydata.zip 파일을 직접 압축 해제합니다. [root@cgls]#unzipmydata.zip5.

무손실, 7z 또는 zip 중 어느 것이 있습니까? 무손실, 7z 또는 zip 중 어느 것이 있습니까? Jan 19, 2021 pm 06:37 PM

7z와 zip은 모두 무손실 압축입니다. 7z는 압축률이 매우 높은 효율적인 주류 압축 형식입니다. ZIP 파일 형식은 데이터 압축 및 문서 저장을 위한 파일 형식입니다. 7z는 압축률이 더 높고 zip 형식이 더 일반적이며 다양한 기술을 보유하고 있으며 Windows 운영 체제는 기본적으로 zip 형식을 지원합니다.

파일 압축을 위해 Java에서 Zip 기능을 사용하는 방법 파일 압축을 위해 Java에서 Zip 기능을 사용하는 방법 Jun 26, 2023 pm 02:10 PM

파일 압축은 디스크 공간과 네트워크 전송 시간을 절약할 수 있는 일반적인 작업이며, Java는 파일 압축을 위한 Zip 기능을 제공합니다. 이 기사에서는 자세한 소개와 예제 데모를 통해 파일 압축을 위해 Java에서 Zip 기능을 사용하는 방법을 보여줍니다. 1. Zip 기능 소개 Zip 기능은 Java에서 제공되는 압축 및 패키징 도구 라이브러리입니다. 이 기능을 사용하면 파일이나 폴더를 Zip 형식 파일로 압축할 수 있습니다. ZipOutputStr은 주로 Zip 함수에서 사용됩니다.

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-folder;1- 파일 */privateIntegertype;/***파일 경로(예: src/main/java/co)

win8 시스템에서 zip은 무엇을 의미합니까? win8 시스템에서 zip은 무엇을 의미합니까? Jul 18, 2023 pm 03:01 PM

win8 시스템은 일상생활에서 자주 접하게 되는 파일의 압축과 압축해제를 해야 하는 경우가 많습니다. 예전에는 누구나 먼저 압축해제 도구를 다운로드받아야 했는데, 오늘은 압축해제 형식 중 하나인 zip에 대해 자세히 알려드리겠습니다. win8 시스템. zip의 의미는 무엇입니까? win8 시스템에서 zip의 의미: 오래 전에 Microsoft는 Windows 시스템에 Zip 압축 지원을 통합했습니다. 고객은 타사 압축 도구를 설치하지 않고도 Zip 형식의 파일을 압축하거나 압축을 풀 수 있습니다. 1. 먼저 파일을 줄이는 것입니다. 이때, 관련된 파일을 모아서 정리하는 경우가 많습니다. 이때, 패키지로 묶어서 보관하면 관리도 편하고 용량도 줄어듭니다. 패키징하려는 파일을 선택하거나 여러 파일일 수 있습니다.

See all articles