2017-10-06 22 views
-3

J'ai un dossier avec des images sur mon site Web. Quand je charge ma page, un téléchargement automatique du dossier comme Zip-File devrait commencer.Comment puis-je télécharger un dossier en tant que fichier Zip?

$dir = 'gallery/1/'; 
$zip_file = 'file.zip'; 

// Get real path for our folder 
$rootPath = realpath($dir); 

// Initialize archive object 
$zip = new ZipArchive(); 
$zip->open($zip_file, ZipArchive::CREATE | ZipArchive::OVERWRITE); 

// Create recursive directory iterator 
/** @var SplFileInfo[] $files */ 
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath), 
    RecursiveIteratorIterator::LEAVES_ONLY 
); 

foreach ($files as $name => $file) 
{ 
    // Skip directories (they would be added automatically) 
    if (!$file->isDir()) 
    { 
     // Get real and relative path for current file 
     $filePath = $file->getRealPath(); 
     $relativePath = substr($filePath, strlen($rootPath) + 1); 

     // Add current file to archive 
     $zip->addFile($filePath, $relativePath); 
    } 
} 

// Zip archive will be created only after closing object 
$zip->close(); 


header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($zip_file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($zip_file)); 
readfile($zip_file); 

Mais lorsque je charge ma page, rien ne se passe.

+0

Y at-il une question – rtfm

+0

Avez-vous vérifié le journal des erreurs? –

+0

@KIKOSoftware J'utilise 'error_reporting (E_ALL);' mais aucune erreur n'est affichée. Il ne se passe rien quand je charge la page – Jarla

Répondre

0

Le code PHP doit figurer en haut de la page. Il ne devrait pas y avoir d'autre code html avant cela