Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 22/12/2012, 14h46   #1
beegees
Membre Expert
 
Avatar de beegees
 
Homme David Non communiqué
Développeur Web
Inscription : mars 2004
Messages : 3 348
Détails du profil
Informations personnelles :
Nom : Homme David Non communiqué
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 348
Points : 1 220
Points : 1 220
Par défaut [ZipArchive] Le zip ne s'affiche pas à l'écran du visiteur

Bonjour à tous,

J'essiae de créer un dossier zip et de l'afficher pour téléchargement sur l'écran du visiteur, mais je n'y arrive pas :

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php // On instancie la classe.
      $zip = new ZipArchive();
 
      $path = "agrements/";
      $path.= $_POST['annee'];
 
      if(is_dir($path))
      {        
        // On teste si le dossier existe, car sans ça le script risque de provoquer des erreurs.
 
        if($zip->open('Archive.zip', ZipArchive::CREATE) == TRUE)
	{
 
	  // Ouverture de l’archive réussie.
 
	  // Récupération des fichiers.
	  $fichiers = scandir($path);
	  // On enlève . et .. qui représentent le dossier courant et le dossier parent.
	  unset($fichiers[0], $fichiers[1]);
 
	  foreach($fichiers as $f)
	  {
	    // On ajoute chaque fichier à l’archive en spécifiant l’argument optionnel.
	    // Pour ne pas créer de dossier dans l’archive.
	    if(!$zip->addFile($path.$f, $f))
	    {
	      echo 'Impossible d&#039;ajouter "'.$f.'".<br/>';
	    }
	  }
 
	  // On ferme l’archive.
	  $zip->close();
 
	  // On peut ensuite, comme dans le tuto de DHKold, proposer le téléchargement.
	  header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier).
	  header('Content-Disposition: attachment; filename="Archive.zip"'); //Nom du fichier.
	  header('Content-Length: '.filesize('Archive.zip')); //Taille du fichier.
 
	  readfile('Archive.zip');
	}
	else
	{
	  // Erreur lors de l’ouverture.
	  // On peut ajouter du code ici pour gérer les différentes erreurs.
	  echo 'Erreur, impossible de créer archive.';
	}
      }
      else
      {
        // Possibilité de créer le dossier avec mkdir().
        echo 'Le dossier n\'existe pas.';
      }
?>
Je me pose une quesiton à propos de ce code :

Code :
1
2
3
4
5
6
7
8
9
foreach($fichiers as $f)
	  {
	    // On ajoute chaque fichier à l’archive en spécifiant l’argument optionnel.
	    // Pour ne pas créer de dossier dans l’archive.
	    if(!$zip->addFile($path.$f, $f))
	    {
	      echo 'Impossible d&#039;ajouter "'.$f.'".<br/>';
	    }
	  }
Je n'ai pas l'impression que l'archive zip est alimentée ? je me trompe ?

Le retour vers jquery ne me donne aucune erreur, j'arrive bien dans le success.

Je n'ai par contre aucune archive qui s'affiche ou qui s'enregistre sur mon disque dur.

La console firebug me montre ceci :


Citation:
Connection Keep-Alive
Content-Disposition attachment; filename="Archive.zip"
Content-Length
Content-Type text/html
scandir($path) contient ceci :


Citation:
array(2) {
[2]=>
string(16) "Didier Calor.pdf"
[3]=>
string(17) "Lenny Kravitz.pdf"
}
et voici un var_dump de mon objet $zip :


Citation:
object(ZipArchive)#1 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(2)
["filename"]=>
string(36) "/home/web998/public_html/Archive.zip"
["comment"]=>
string(0) ""
}
Merci d'avance pour l'aide.

bee
__________________
beegees est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h03.


 
 
 
 
Partenaires

Hébergement Web