PHP
- 11/02/2010
Compresser des fichiers avec PHP
Bonjour, aujourd'hui je vais vous montrer comment compresser le fichier avec PHP. La procédure est très simple, si votre serveur est la zlib activée il suffit d'exécuter un code comme ceci:
- <?
- / **
- * Les insère un fichier dans un zip.
- *
- * @ Param string $ nom de fichier ZIP name_of_zip qui sera travaillé.
- * Le fichier @ Param string path path_file $ originale qui va à l'ZIP
- * @ Param string $ file_name Nom de fichier dans le ZIP
- * @ Return Mixed
- * /
- $name_of_zip = null , $path_file = null , $file_name = null ) { fonction fileToZip ($ name_of_zip = null, path_file $ = null, $ file_name = null) {
- ; retour »Tous les paramètres sont nécessaires»;
- }
- / / Créer l'instance de ZIP
- ZipArchive; $ Zip = new ZipArchive;
- / / S'il est impossible de créer le fichier ZIP
- $zip -> open ( $name_of_zip , ZIPARCHIVE:: CREATE ) === true ) { if ($ zip -> open ($ name_of_zip, ZIPARCHIVE :: CREATE) === true) {
- / / Ajouter le fichier à l'intérieur du zip
- ( $path_file , $file_name ) ; $ Zip -> AddFile (path_file $, $ file_name);
- ( ) ; // fecha a conexão com o ZIP $ Zip -> close () / connexion / étroite avec le Comité ZIP
- / / En option, vous pouvez supprimer le fichier original, il suffit d'insérer une variable dans les paramètres
- / / Unlink ('/ chemin / vers / fichier / fichier.php');
- ; return true;
- { Else {}
- ; return false;
- }
- }
- ?>
Ce poste est un complément à l' Comment décompresser des fichiers avec PHP et ensemble, nous pouvons transformer une classe très utile.
Voyons voir si cela fonctionne? Je vais jouer ce rôle et la fonction du post précédent dans un fichier et lancez pour voir si le fichier a été créé correctement:
- <?
- / **
- * Les insère un fichier dans un zip.
- *
- * @ Param string $ nom de fichier ZIP name_of_zip qui sera travaillé.
- * Le fichier @ Param string path path_file $ originale qui va à l'ZIP
- * @ Param string $ file_name Nom de fichier dans le ZIP
- * @ Return Mixed
- * /
- $name_of_zip = null , $path_file = null , $file_name = null ) { fonction fileToZip ($ name_of_zip = null, path_file $ = null, $ file_name = null) {
- ; retour »Tous les paramètres sont nécessaires»;
- }
- / / Créer l'instance de ZIP
- ZipArchive; $ Zip = new ZipArchive;
- / / S'il est impossible de créer le fichier ZIP
- $zip -> open ( $name_of_zip , ZIPARCHIVE:: CREATE ) === true ) { if ($ zip -> open ($ name_of_zip, ZIPARCHIVE :: CREATE) === true) {
- / / Ajouter le fichier à l'intérieur du zip
- ( $path_file , $file_name ) ; $ Zip -> AddFile (path_file $, $ file_name);
- ( ) ; // fecha a conexão com o ZIP $ Zip -> close () / connexion / étroite avec le Comité ZIP
- / / En option, vous pouvez supprimer le fichier original, il suffit d'insérer une variable dans les paramètres
- / / Unlink ('/ chemin / vers / fichier / fichier.php');
- ; return true;
- { Else {}
- ; return false;
- }
- }
- / **
- * Cette fonction décompresse les fichiers
- * Une fermeture à glissière
- *
- * @ Param string $ path l'emplacement du fichier. Zip
- * @ Param string $ pathunzip dossier où les fichiers doivent être décompressés
- * /
- $path , $pathunzip = '.' ) { fonction unzip ($ path, $ pathunzip = '.') {
- # === - Instancie la classe de Zip
- ZipArchive; $ Zip = new ZipArchive;
- # === - Essayez d'ouvrir le zip
- $zip -> open ( $path ) ) { if ($ zip -> open ($ path)) {
- -> extractTo ( $pathunzip ) ; // executa o unzip $ Retour = $ zip -> extractTo ($ pathunzip) / / exécuter le unzip
- ( ) ; // fecha a coneção com o .zip $ Zip -.> Close () / / fermer la connexion ou avec Zip
- { Else {}
- }
- }
- / **
- * Cette fonction retourne un tableau avec
- * Les noms de fichiers qui sont
- * Dans le zip.
- *
- * @ Param string $ path l'emplacement du fichier. Zip
- * @ Return array ou faux en cas d'erreur
- * /
- $path ) { fonction zipToArray ($ path) {
- # === - Instancie la classe
- ZipArchive; $ Zip = new ZipArchive;
- # ==== - Essayez d'ouvrir le zip
- $zip -> open ( $path ) ) { if ($ zip -> open ($ path)) {
- # === - Récupère le nombre de fichiers zip
- -> numFiles ; Num_files $ = zip -> Nombre de fichiers;
- # === - Exécute les fichiers prenant les noms et les mettre dans un tableau
- $i = 0 ; $i <= ( $num_files ) -1 ; $i ++ ) { for ($ i = 0; $ i <= ($ num_files) -1; $ i + +) {
- = $zip -> getNameIndex ( $i ) ; $ Sortie [] = $ zip -> getNameIndex ($ i);
- }
- # ==== - Ferme la connexion
- ( ) ; $ Zip -> close ();
- # ==== - Retora le tableau à être manipulée
- ; return $ sortie;
- }
- ; return false;
- }
- / / Ajout de fichiers
- , './texto.txt' , 'texto.txt' ) ; fileToZip ('. / nome_do_zip.zip',, 'texte.txt' / texte.txt. ');
- , './texto.txt' , 'texto2.txt' ) ; fileToZip ('. / nome_do_zip.zip',, 'texto2.txt' / texte.txt. ');
- / / Lecture du fichier zip créé pour voir si il ya un fichier quelconque dans
- ?>
Voir le résultat:
Je vais faire un post sur la façon de créer une classe avec ces caractéristiques bientôt.
Pour aujourd'hui, il est ...




4 commentaires pour "compresser les fichiers avec PHP"
Bonne Marcelão ... comme toujours dynamitage dans les messages!
Ainsi, avait parlé à eu une classe générique, mais il n'est pas .. lol .. pas générique mais comme il est un peu différente de la vôtre, suivez le code là pour des suggestions et des améliorations ... fonctionne très bien ... mais je veux travailler avec l'idéologie correcte OO ... alors aidez-moi! : P
<Php
/ **
Zip classe * - Pour compresser des photos d'une rivière diretï ¿½
*
* @ Auteur Rafael Ortega Bueno
* @ Paramètre $ path = chemin du dossier
* Nom du paramètre @ = $ nom du nouveau fichier
** /
{Classe Zipador
zip fonction publique ($ path, $ dossier) {
$ PATH = $ PATH "/".;
$ Taille = strlen ("$ dossier");
for ($ i = 0; $ i <$ taille, $ i + +) {
if (substr ($ dossier, $ i, 1) == "/") {
$ Filename = substr ($ dossier ($ i +1), $ taille);
}
}
/ / - Au-dessus de Jhonatan
$ Dir = opendir ($ path);
$ X = Array ();
while ($ fichier = readdir ($ dir)) {
array_push ($ x, $ file);
}
for ($ i = 0; iopen $ (". $ {} new_name zip" ZIPARCHIVE :: CREATE) === true) {
$ Zip-> AddFile ($ path $ X [$ i], $ x [$ i].);
$ Zip-> close ();
print "Le fichier zippé avec succès";
}
else {
d'impression "Problèmes zip votre fichier";
}
}
}
return " Télécharger le fichier ";
/ / Echo "location.href = '$ new_name.zip'";
}
/ / ------------
buscaNomePasta fonction publique ($ id) {
Base de données $ = mysql_query ("SELECT FROM d'envoi de fichiers
OÙ idenvio = $ id ");
while ($ row = mysql_fetch_array ($ database)) {
$ Dossier = $ row ['fichier'];
}
return $ dossier;
}
}
?>
Par Rafael Ortega Bueno (6 commentaires) sur 02/12/2010
Pouvez-vous clarifier une question?
Comment puis-je créer le fichier en plusieurs parties?
J'ai un cron qui génère une sauvegarde (bd), puis envoyer colis a été de travailler normalement ......
mais maintenant la sauvegarde est d'environ 200Mo.
et le temps de compresser l'erreur, il ne compresse pas ...
pensé pour compresser en plusieurs parties ... ne sais pas si vous pouvez ..
merci
Par Laureano (1 commentaires) sur 03/09/2011
Guy aimé simple et directe.
Merci.
Par Joshua (4 commentaires) sur 27/08/2011
<Php
/ / Auteur: Luis Estelvio
/ / Date: 12/08/2011
/ / Construire le chemin
$ Dwloaddir = "path";
/ / Vérifier si le dossier existe, crée par ailleurs
! Is_dir (dwloaddir $)? mkdir ($ dwloaddir, 0777): "";
$ Fichier = fopen ($ dwloaddir "/" "Teste_1.txt", "w"..);
for ($ i = 0; $ i <10; $ i + +) fwrite ($ fichier, "test test test test \ n");
fclose ($ fichier);
$ Fichier = fopen ($ dwloaddir "/" "Teste_2.txt", "w"..);
for ($ i = 0;! $ i ouvert ($ filename, ZIPARCHIVE :: CREATE) == TRUE) {
exit ("Impossible d'ouvrir le fichier \ n");
}
$ Zip-> AddFile ($ dwloaddir "/ Teste_1.txt", "teste_1.txt".);
$ Zip-> AddFile ($ dwloaddir "/ Teste_2.txt", "teste_2.txt".);
$ Zip-> close ();
?>
Pour Estelvio (1 commentaires) sur 12.06.2011