open($filename,ZipArchive::CREATE);" et utilisez "$zip->addFile($path,basename($path));" Compressez le fichier."/> open($filename,ZipArchive::CREATE);" et utilisez "$zip->addFile($path,basename($path));" Compressez le fichier.">

Maison >développement back-end >Problème PHP >Comment compresser des fichiers en php

Comment compresser des fichiers en php

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-09-29 14:58:474402parcourir

Comment compresser des fichiers en php

Compresser un fichier

Nous générons un package compressé à partir d'un fichier.

<?php
$path = "c:/wamp/www/log.txt";
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);   //打开压缩包
$zip->addFile($path,basename($path));   //向压缩包中添加文件
$zip->close();  //关闭压缩包

Le code ci-dessus compresse le fichier c:/wamp/www/log.txt dans test.zip et l'enregistre dans le répertoire courant.

Recommandations associées : "Tutoriel d'introduction à PHP"

Compresser plusieurs fichiers

Compresser plusieurs fichiers, ce qui est en fait addFile Execution plusieurs fois peuvent être réalisées en parcourant le tableau.

<?php
$fileList = array(
    "c:/wamp/www/log.txt",
    "c:/wamp/www/weixin.class.php"
);
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);   //打开压缩包
foreach($fileList as $file){
    $zip->addFile($file,basename($file));   //向压缩包中添加文件
}
$zip->close();  //关闭压缩包

Compresser un répertoire

<?php
function addFileToZip($path,$zip){
    $handler=opendir($path); //打开当前文件夹由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){//文件夹文件名字为&#39;.&#39;和‘..’,不要对他们进行操作
            if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
                addFileToZip($path."/".$filename, $zip);
            }else{ //将文件加入zip对象
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
$zip=new ZipArchive();
if($zip->open(&#39;rsa.zip&#39;, ZipArchive::OVERWRITE)=== TRUE){
    addFileToZip(&#39;rsa/&#39;, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
    $zip->close(); //关闭处理的zip文件
}

Compresser et télécharger le package zip

Dans mon cas, nous devons le packager et fournissez Télécharger, puis supprimez le package compressé.

peut être divisé en les étapes suivantes :

(1) Déterminez si le chemin donné est un dossier ou un fichier. Le dossier doit également être parcouru pour ajouter des fichiers.

(2) Définissez l'en-tête du fichier approprié et utilisez la fonction readfile pour permettre le téléchargement.

(3) Utilisez la fonction de dissociation pour supprimer le package compressé.

<?php
function addFileToZip($path,$zip){
    $handler=opendir($path); //打开当前文件夹由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){//文件夹文件名字为&#39;.&#39;和‘..’,不要对他们进行操作
            if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
                addFileToZip($path."/".$filename, $zip);
            }else{ //将文件加入zip对象
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
$zip=new ZipArchive();
if($zip->open(&#39;rsa.zip&#39;, ZipArchive::OVERWRITE)=== TRUE){
    $path = &#39;rsa/&#39;;
    if(is_dir($path)){  //给出文件夹,打包文件夹
        addFileToZip($path, $zip);
    }else if(is_array($path)){  //以数组形式给出文件路径
        foreach($path as $file){
            $zip->addFile($file);
        }
    }else{      //只给出一个文件
        $zip->addFile($path);
    }
    $zip->close(); //关闭处理的zip文件
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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