Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2006, 15h21   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
Par défaut [Zip] comment compresser un fichier en php?

j'ai essayé d'utiliser ce code en dessous il affiche la compression mais je ne sais pas comment faire pour avoir le fichier zippé
j'ai utilisé la librairie zip.lip.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
require("zip.lib.php") ; //indiquez le chemin d'accès à la librérie
 
$zip = new zipfile() ; //on crée un fichier zip
 
$filename = 'dump.sql' ;
$fp = fopen($filename,'r') ; //on ouvre le fichier en lecture seule
$contenu = fread($fp, filesize($filename)) ; //on enregistre le contenu
fclose($fp) ; //on ferme FTP
 
$zip->addfile($contenu, $filename) ; //on ajoute le fichier
 
$archive = $zip->file() ; //on associe l'archive
 
header('Content-Type: application/x-zip') ; //on détermine les en-tête
header('Content-Disposition: inline; filename=archive.zip') ;
 
echo $archive ;
?>
personne n'a une réponse?
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 18h01   #2
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
remplace par
Code :
file_put_contents('archive.zip', $archive);
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 18h53   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 66
Points : 39
Points : 39
salut !
http://www.php.net/manual/fr/ref.zip.php
ca devra t'aider .
php4life est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 18h59   #4
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
merci de ta réponse j'ai rajouté ce que tu m'as demandé , et voila les messages d'erreurs qui s'affichent.
peut tu me dire pourquoi?
Code :
1
2
3
4
5
6
 
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\sauo\functionsauv.php:61) in c:\program files\easyphp1-8\www\sauo\zipperdump.php on line 15
 
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\sauo\functionsauv.php:61) in c:\program files\easyphp1-8\www\sauo\zipperdump.php on line 16
 
Fatal error: Call to undefined function: file_put_contents() in c:\program files\easyphp1-8\www\sauo\zipperdump.php on line 18
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 10h13   #5
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
tu utilises easyphp qui installe php4, alors que file_put_contents n'est disponible que sur php5!

bon, dans ce cas, remplace
Code :
file_put_contents('archive.zip', $archive);
par
Code :
1
2
3
$open = fopen('tonRepertoire\archive.zip', "wb");
fwrite($open, $archive);
fclose($open);
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 19h32   #6
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
Merci de ta réponse !

j'ai rajouter le bout de code mais cela na marche pas toujours
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 03h03   #7
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Citation:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\sauo\functionsauv.php:61) in c:\program files\easyphp1-8\www\sauo\zipperdump.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\sauo\functionsauv.php:61) in c:\program files\easyphp1-8\www\sauo\zipperdump.php on line 16
Ces messages d'erreurs signifient que tu essayes d'exécuter la fonction header() alors que tu as déjà émis quelque chose au navigateur (texte avec echo ou balise html...). En effet, la fonction header() doit être exécutée en tout 1er dans ton site avant qu'une autre fonction envoit quelque chose au navigateur.
Citation:
Fatal error: Call to undefined function: file_put_contents() in c:\program files\easyphp1-8\www\sauo\zipperdump.php on line 18
Ce message d'erreur a du disparaître avec la réponse donnée par SegmentationFault, non ?
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 09h44   #8
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
Merci de ta réponse!
Citation:
Envoyé par Sub0
Ces messages d'erreurs signifient que tu essayes d'exécuter la fonction header() alors que tu as déjà émis quelque chose au navigateur (texte avec echo ou balise html...). En effet, la fonction header() doit être exécutée en tout 1er dans ton site avant qu'une autre fonction envoit quelque chose au navigateur.
Ce message d'erreur a du disparaître avec la réponse donnée par SegmentationFault, non ?
non pas du tout cela ne marche pas toujours a tu une autre idée?
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 10h05   #9
Rédactrice
 
Avatar de xave
 
Inscription : mai 2002
Messages : 860
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mai 2002
Messages : 860
Points : 824
Points : 824
Salut,

utilises ob_start() ob_end_flush() pour résoudre tes problèmes de headers.

Voir ici et pour la doc
__________________
Les règles du forum
Cours et tutoriels php
Développements web (CSS, (X)HTML,javascript, etc...)
Cours et tutoriels MySQL
Tutoriels Ajax
Initiation à PHP-GTK1


Il n'est point de bonheur sans liberté, ni de liberté sans courage. Péricles
xave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 20h33   #10
 
ghislain IRANYUMVA
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : ghislain IRANYUMVA

Informations forums :
Inscription : décembre 2010
Messages : 7
Points : -2
Points : -2
Désoler mais il y avais plus simple (je crois) (^_^) En tout cas ça marche trèès bien chez moi (ça c'est pour ceux qui ont le même problème car je pense que chez toi c'est déjà résolue depuis longtemps.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function compress($filename,$title_of_file)
{

// appel de la classe
    require_once('zip.lib.php');
    // nom du fichier à ajouter dans l'archive
    $filename = $filename;
    
    // contenu du fichier
    $fp = fopen ($filename, 'r');
    $content = fread($fp, filesize($filename));
    fclose ($fp);
    
    // création d'un objet 'zipfile'
    $zip = new zipfile();
    // ajout du fichier dans cet objet
    $zip->addfile($content, $filename);
    // production de l'archive' Zip
    $archive = $zip->file();
    
    // entêtes HTTP
    header('Content-Type: application/x-zip');
    // force le téléchargement
    header('Content-Disposition: inline; filename='.$title_of_file.'.zip'); //Comme vous voulez
    
    // envoi du fichier au navigateur
    return $archive;
}

Pour appeler cette fonction, NE PAS APPELER COMME CA
compress("dossier/moi.jpg","moi");
MAIS
echo compress("dossier/moi.jpg","moi");
Voilaaaa
ghighi-du63000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 10h07   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 250
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 250
Points : 8 635
Points : 8 635
Citation:
Envoyé par ghighi-du63000 Voir le message
Désoler mais il y avais plus simple (je crois) (^_^) En tout cas ça marche trèès bien chez moi (ça c'est pour ceux qui ont le même problème car je pense que chez toi c'est déjà résolue depuis longtemps.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function compress($filename,$title_of_file)
{

// appel de la classe
    require_once('zip.lib.php');
    // nom du fichier à ajouter dans l'archive
    $filename = $filename;
    
    // contenu du fichier
    $fp = fopen ($filename, 'r');
    $content = fread($fp, filesize($filename));
    fclose ($fp);
    
    // création d'un objet 'zipfile'
    $zip = new zipfile();
    // ajout du fichier dans cet objet
    $zip->addfile($content, $filename);
    // production de l'archive' Zip
    $archive = $zip->file();
    
    // entêtes HTTP
    header('Content-Type: application/x-zip');
    // force le téléchargement
    header('Content-Disposition: inline; filename='.$title_of_file.'.zip'); //Comme vous voulez
    
    // envoi du fichier au navigateur
    return $archive;
}

Pour appeler cette fonction, NE PAS APPELER COMME CA
compress("dossier/moi.jpg","moi");
MAIS
echo compress("dossier/moi.jpg","moi");
Voilaaaa

bof, y'a 5 ans peu etre mais la y'a l'extension zip :
http://www.php.net/manual/fr/book.zip.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h52.


 
 
 
 
Partenaires

Hébergement Web