kszere 8 Zgłoś post Napisano Marzec 17, 2013 Poniżej przedstawiam kod skryptu pakowania plików do archiwum zip Niestety gdzieś jest błąd i każdy folder oznacza jako niedozwolony, a jeśli ustawi się na sztywno jeden bez array to po zapakowaniu i pobraniu pliku nie można go rozpoznać (System nie może rozpoznać pliku). <?php error_reporting(E_ERROR | E_PARSE); define('ZIPDIR', 'zippeds/'); $allowed_dirs = array ( 'download/files', 'materały/download/foto' ); if (!empty($_GET['dir'])) { $dirname = basename($_GET['dir']); if (array_search($dirname, $allowed_dirs) == FALSE) { die('BŁĄD: Ten katalog nie jest dozwolony!'); } if (!is_dir($dirname)) { die('BŁĄD: Podany katalog nie istnieje!'); } } else { die('BŁĄD: Nie podano nazwy katalogu.'); } $filelist = array(); $dir=opendir($dirname); while(($nazwa_pliku = readdir($dir)) !== false) { if(($nazwa_pliku!=".") && ($nazwa_pliku!="..")) { $filelist[] = "$dirname/$nazwa_pliku"; } } closedir($dir); function create_zip($files = array(),$destination = '',$overwrite = false) { if(file_exists($destination) && !$overwrite) { return true; } $valid_files = array(); if(is_array($files)) { foreach($files as $file) { if(file_exists($file)) { $valid_files[] = $file; } } } if(count($valid_files)) { $zip = new ZipArchive(); if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { return false; } foreach($valid_files as $file) { $zip->addFile($file,$file); } $zip->close(); return file_exists($destination); } else { return false; } } $dest = ZIPDIR . md5($dirname) . '.zip'; $result = create_zip($filelist, $dest); header('Content-Type: application/zip'); header('Content-Length: ' . filesize($dest)); header('Content-Disposition: attachment; filename=' . $dirname . '.zip'); readfile($dest); echo file_get_contents($dest); ?> Udostępnij ten post Link to postu Udostępnij na innych stronach