Bonjour à tous,
J'ai besoin de proposer aux utilisateurs le téléchargement de PDFs compressés dans une archive ZIP. J'ai testé plusieurs scripts trouvés sur le net jusqu'à trouver mon bonheur. Du moins le pensais-je ! Il s'avère que mon archive est uniquement lisible sous Linux. Incompréhension totale !
Voici mon code :Et voici la requêtes de téléchargement :
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 $request = $this->getRequest(); $session = $request->getSession(); $zip = new ZipArchive(); $zipName = 'cotations.zip'; $dir = $this->get('kernel')->getRootDir() . '/../web/bundles/blabla/pdf/'.$session->getId().'/zip/'; if(file_exists($dir.$zipName)){ unlink($dir.$zipName); } if($zip->open($dir.$zipName, ZipArchive::CREATE) === true) { echo '"cotations.zip" ouvert<br/>'; $files = scandir($dir); unset($files[0], $files[1]); foreach($files as $file) { $zip->addFile($dir.$file, $file); } // Et on referme l'archive. } else { echo 'Impossible d'ouvrir "cotations.zip<br/>'; // Traitement des erreurs avec un switch(), par exemple. } $zipNameContents = $zip->filename; $zip->close(); $response = new Response(file_get_contents($zipNameContents)); $response->headers->set('Content-Type', 'application/zip'); $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $zipName); $response->headers->set('Content-Disposition', $d); return $response;Auriez-vous un tuto traitant de la création d'archive sous symfony vers lequel me rediriger à la limite ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 curl 'http://application.vgrt/web/app_dev.php/pdf-telechargement' -H 'Host: application.vgrt' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.8.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate' -H 'Referer: http://application.vgrt/web/app_dev.php/validation' -H 'Connection: keep-alive'
Partager