ホームページ バックエンド開発 PHPチュートリアル php ZipArchive压缩函数详解实例_PHP

php ZipArchive压缩函数详解实例_PHP

Jun 01, 2016 am 11:58 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
删除压缩包中的某一个文件名称,同时也将文件删除。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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 モジュールを使用する)

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 関数を使用してファイルを圧縮する方法を、詳細な紹介とデモ例を通して説明します。 1. Zip 関数の概要 Zip 関数は、Java で提供されている圧縮・パッケージ化ツールのライブラリで、ファイルやフォルダを Zip 形式のファイルに圧縮することができます。 ZipOutputStr は主に Zip 関数で使用されます

HTML ファイルの ZIP 圧縮の秘密を簡単にマスターする HTML ファイルの ZIP 圧縮の秘密を簡単にマスターする Apr 09, 2024 pm 05:36 PM

HTML ファイルの ZIP 圧縮は、Python の zipfile モジュールを通じて実現できます。 ZIP ファイル オブジェクトを作成します。 HTML ファイルを ZIP ファイルに追加します。 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)

PHPのzip_close()関数 PHPのzip_close()関数 Aug 28, 2023 pm 03:33 PM

zip_close() 関数は、zip ファイル アーカイブを閉じるために使用されます。 zip は zip_open() 関数によって開かれます。構文 zip_close(zip_file) パラメータ zip_file - ここでは、zip_open() で開かれた zip ファイルについて説明します。これは閉じたいファイルです。戻り値 zip_close() 関数は何も返しません。例<?php $zip_file=zip_open("new.zip"); zip_read($zip_file);&n

See all articles