Maison développement back-end tutoriel 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
删除压缩包中的某一个文件名称,同时也将文件删除。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Meilleur guide pour compresser des fichiers HTML en ZIP Meilleur guide pour compresser des fichiers HTML en ZIP Apr 09, 2024 pm 04:09 PM

La compression de fichiers HTML au format ZIP peut améliorer la vitesse de chargement des pages. Les méthodes incluent : l'utilisation d'outils en ligne (tels que FileOptimizer, TinyPNG) l'utilisation d'outils de ligne de commande (tels que gzip, 7-zip) l'utilisation de scripts Node.js (en utilisant le module zlib)

Comment utiliser la commande zip de compression Linux Comment utiliser la commande zip de compression Linux Oct 08, 2023 pm 01:25 PM

La commande zip est un outil de compression très utile dans les systèmes Linux. En utilisant la commande zip, vous pouvez facilement compresser des fichiers et des répertoires dans un fichier zip, économiser de l'espace de stockage et faciliter le transfert. La syntaxe de base de la commande zip est "zip [options] [nom du fichier compressé] [fichier ou répertoire à compresser]".

Explication détaillée de la commande du fichier de décompression (zip) sous centos7 Explication détaillée de la commande du fichier de décompression (zip) sous centos7 Jan 07, 2024 pm 06:30 PM

1. Le dossier compressé est un fichier zip [root@cgls]#zip-rmydata.zipmydata2. Décompressez mydata.zip dans le répertoire mydatabak [root@cgls]#unzipmydata.zip-dmydatabak3.mydata01 et mydata02.txt sont compressés dans mydata.zip[root@cgls]#zipmydata.zipmydata01mydata02.txt4. Décompressez directement le fichier mydata.zip [root@cgls]#unzipmydata.zip5.

Comment utiliser la fonction Zip en Java pour la compression de fichiers Comment utiliser la fonction Zip en Java pour la compression de fichiers Jun 26, 2023 pm 02:10 PM

La compression de fichiers est une opération courante qui permet d'économiser de l'espace disque et du temps de transmission réseau, et Java fournit la fonction Zip pour la compression des fichiers. Cet article montrera comment utiliser la fonction Zip en Java pour la compression de fichiers à travers une introduction détaillée et un exemple de démonstration. 1. Introduction à la fonction Zip La fonction Zip est une bibliothèque d'outils de compression et de packaging fournie en Java. Cette fonction peut être utilisée pour compresser des fichiers ou des dossiers dans un fichier au format Zip. ZipOutputStr est principalement utilisé dans la fonction Zip

Lequel est sans perte, 7z ou zip ? Lequel est sans perte, 7z ou zip ? Jan 19, 2021 pm 06:37 PM

7z et zip sont tous deux des compressions sans perte. 7z est un format de compression courant et efficace avec un taux de compression très élevé ; le format de fichier ZIP est un format de fichier pour la compression de données et le stockage de documents. 7z a un taux de compression plus élevé, suivi de zip ; le format zip est plus courant et dispose d'un large éventail de technologies, et le système d'exploitation Windows prend en charge le format zip par défaut.

Maîtrisez facilement les secrets de la compression ZIP des fichiers HTML Maîtrisez facilement les secrets de la compression ZIP des fichiers HTML Apr 09, 2024 pm 05:36 PM

La compression ZIP d'un fichier HTML peut être obtenue via le module zipfile de Python : Créez un objet fichier ZIP. Ajoutez des fichiers HTML au fichier ZIP. Fermez l'objet fichier ZIP.

Comment analyser les archives zip et obtenir le contenu des fichiers en Java Comment analyser les archives zip et obtenir le contenu des fichiers en Java May 18, 2023 am 11:34 AM

La page de description de la fonction télécharge un package compressé de code source, et le backend décompresse le package compressé et obtient le contenu de chaque fichier. Code source associé (1) Définissez d'abord une classe d'entité correspondant au fichier décompressé. packagecom.sonar.data.vo;importlombok.Data;/***Objet d'analyse de fichier**@authorYuanqiang.Zhang*@since2022/7/12*/@DatapublicclassUnzipFileVo{/***Type : 0-dossier ;1- Fichier */privateIntegertype;/***Chemin du fichier (tel que : src/main/java/co

fonction zip_close() en PHP fonction zip_close() en PHP Aug 28, 2023 pm 03:33 PM

La fonction zip_close() est utilisée pour fermer les archives de fichiers zip. zip est ouvert par la fonction zip_open(). Syntaxe zip_close(zip_file) Paramètres zip_file - les fichiers zip ouverts avec zip_open() sont mentionnés ici. C'est le fichier que nous voulons fermer. Retour La fonction zip_close() ne renvoie rien. Exemple<?php $zip_file=zip_open("new.zip"); zip_read($zip_file);&n

See all articles