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 : Sélectionner tout - Visualiser dans une fenêtre à part
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'ajouter &quot;'.$f.'&quot;.<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 : Sélectionner tout - Visualiser dans une fenêtre à part
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'ajouter &quot;'.$f.'&quot;.<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 :


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


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


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