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

Comment compresser des fichiers en php

爱喝马黛茶的安东尼
Libérer: 2023-02-25 15:56:01
original
4394 Les gens l'ont consulté

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();  //关闭压缩包
Copier après la connexion

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();  //关闭压缩包
Copier après la connexion

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文件
}
Copier après la connexion

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文件
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal