Bonjour,
Je rencontre un problème sur un de mes projets.
Je dois créer un bouton qui devra Ziper un dossier contenant des images et ensuite forcer le telechargement.
Donc je me suis inspiré du code trouvé sur le site du Zéro
Lorsque j'ouvre l'archive, j'ai une erreur Fin de l'archive incorrecte.
Pourtant je retrouve bien mes images dans l'archive, enfin j'ai remarqué que le CRC32 était à 0.
Si quelqu'un a une idée ?
PHP 5.5.12
Je rencontre un problème sur un de mes projets.
Je dois créer un bouton qui devra Ziper un dossier contenant des images et ensuite forcer le telechargement.
Donc je me suis inspiré du code trouvé sur le site du Zéro
public function download()
{
$site = $this->Site->find($_GET['id']);
$mouvement = $this->Mouvement->lastImgBySite($_GET['id']);
$name = $site->code_client1;
$dest = WEBROOT."web/img/gsm/";
$filename = $name.".zip";
$source = ROOT."/web/img/gsm/".$name.'/';
var_dump($filename, $source, $dest);
if(is_dir($source))
{
// On teste si le dossier existe, car sans ça le script risque de provoquer des erreurs.
$zip = new ZipArchive();
if($zip->open($filename, ZipArchive::CREATE) == TRUE)
{
// Ouverture de l’archive réussie.
// Récupération des fichiers.
$fichiers = scandir($source);
// 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($source.$f, $f))
{
echo 'Impossible d'ajouter "'.$f.'".<br/>';
}
}
// On ferme l’archive.
$zip->close();
header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier).
header('Content-Disposition: attachment; filename="'.$filename.'"'); //Nom du fichier.
header('Content-Length: '.filesize($filename)); //Taille du fichier.
readfile($filename);
}
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 l'archive.';
}
}
else
{
// Possibilité de créer le dossier avec mkdir().
echo 'Le dossier "upload/" n'existe pas.';
}
}
Lorsque j'ouvre l'archive, j'ai une erreur Fin de l'archive incorrecte.
Pourtant je retrouve bien mes images dans l'archive, enfin j'ai remarqué que le CRC32 était à 0.
Si quelqu'un a une idée ?
PHP 5.5.12