download multiple pdf files
Bonjour,
Je souhaite faire un download de plusieurs fichiers pdf à travers une boucle foreach.
J'ai le code qui permet de le faire pour un seul fichier à partir du header:
Code:
1 2 3 4 5 6 7 8
|
$file = $this->getContentFile(); //renvoie le content stream
$filename = ...;
header("Content-Type: application/pdf");
header("Content-Disposition: attachement; filename=\"$filename\"");
header("Pragma: no-cache");
header("Expires: 0");
echo $file; |
pour un seul fichier ça marche bien, j'ai une fenêtre qui permet de faire le downolad..pour plusieurs fichiers j'essaie de créer un zip:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
$zipname = 'myarchive.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
foreach ($files as $file){
$zip->addFile($file);
}
$zip->close(); |
le problème c'est que mon $file, ne représente pas le chemin vers le fichier, c'est le contenu du fichier. Je ne peux pas récupérer le path, ces fichiers viennent d'une appli externe et j'ai pas trop la main dessus..
j'ai essayé aussi avec:
Code:
1 2
|
$zip->addFromString($zipname, file_get_contents($file)); |
mais ça ne marche pas non plus...le contenu du zip est vide!! :roll:
est-ce que vous auriez une solution?
Merci!!
problème utf8 aprés génération de zip
j'ai réussi finalement à générer le zip avec les fichiers pdf..
maintenant j'ai un autre souci, c'est que les noms des fichiers sont en français et ce n'est pas pris en compte dans le zip...pas de caractères accentués..
je suis entrain de tenter de faire des conversions en utf8, mais je n'ai toujours pas réussi..voici les conversions que j'ai essayé:
Code:
1 2 3 4 5 6 7
|
$myfilename = mb_convert_encoding($filename, 'UTF-8','CP850');
$myfilename = mb_convert_encoding ($filename,'CP1252', 'utf-8')
$myfilename = iconv("ISO-8859-1", "CP437", $filename);
$myfilename = iconv('utf-8', 'IBM437', $filename);
$myfilename = iconv('CP1252', 'CP850', $filename);
$myfilename = utf8_encode($filename); |
vous aurez d'autres idées?