Bonjour à toutes et à tous,
J'ai essayé de créer une archive zip sous Symfony et de la proposer au téléchargement à l'utilisateur. Voici le code que j'ai produit:
Dans la plupart des tutoriels que j'ai regardé qur le net, ceux-ci mettent un nom à la variable zipname que j'ai. Par exemple, dans mon cas "Export.zip" à la place de "php://memory". Sauf que lorsque je fait ça, non seulement l'utilisateur ne se vois pas proposé l'archive au téléchargement et en plus obtient une page avec pleins de signes cabalistiques qui je suppose correspond à l'archive elle-même mais sous forme écrite (donc c'est horrible ). Quand je laisse "php://memory" l'archive est bien proposée au téléchargement, sauf que lorsque je l'ouvre cela provoque l'erreur suivante:
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 public function zipAllDataAction(){ $annee_choix=$_POST['choix_annee']; $zip=new \ZipArchive(); $opened_zip=null; $zipname="php://memory"; if ($zip->open($zipname,\ZipArchive::CREATE)!==TRUE){ \Doctrine\Common\Util\Debug::dump("Impossible d'ouvrir le fichier"); }else{ //$zip->addFromString("le nom", $contents);//à faire pour toutes les extractions $directory=$this->container->get('kernel')->getRootdir()."/../web/resources/Logistique/Etat_stock_conso"; $files=array_diff(scandir($directory),array('..','.')); foreach ($files as $file){ //$nom_fichier=$value; //\Doctrine\Common\Util\Debug::dump($nom_fichier); if (!$zip->addFile($directory."/".$file,"Etat_stock_conso/".$file)){ \Doctrine\Common\Util\Debug::dump("Ajout de fichier impossible"); }//à faire pour les états des stocks des conso. } $zip->close(); //$zip=zip_open($zipname); //$content=stream_get_contents($zip); //application/zip return new Response(readfile($zipname), 200, array( 'Content-Transfert-encoding: binary', 'Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="Export.zip"', 'Content-Length: '.filesize("Export.zip") )); } }
Lorsque je crée l'archive il n'y a aucune erreur. En ce qui concerne les chemins de fichiers je suis sûr que ce sont bien ceux-ci puisque c'est moi même qui les ait créé. Donc jusqu'au "close" aucune erreur. Si vous avez quelques idées et/ou suggestions de corrections à faire merci d'avance pour votre aide.Archive: /tmp/Export-3.zip
[/tmp/Export-3.zip]
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
zipinfo: cannot find zipfile directory in one of /tmp/Export-3.zip or
/tmp/Export-3.zip.zip, and cannot find /tmp/Export-3.zip.ZIP, period.
Partager