PDA

View Full Version : مشکل در کد زیپ کردن فولدرها



kabootar_y
پنج شنبه 13 آذر 1393, 12:07 عصر
سلام خدمت همه دوستان گرامی
با کذ زیر من میتونم فقط یک فولدر رو با محتویاتش zip کنم و برای دانلود ارائه بدم.
آیا میشه با تغییراتی در این کد کاری کرد که بشه چند تافایل و چند تا فولدر رو zip کرد و برای دانلود ارائه داد؟





$the_folder = 'myfolder/';
$zip_file_name = 'output_file.zip';




$download_file= true;
//$delete_file_after_download= true; doesnt work!!




class FlxZipArchive extends ZipArchive {
/** Add a Dir with Files and Subdirs to the archive;;;;; @param string $location Real Location;;;; @param string $name Name in Archive;;; @author Nicolas Heimann;;;; @access private **/


public function addDir($location, $name) {
$this->addEmptyDir($name);


$this->addDirDo($location, $name);
} // EO addDir;


/** Add Files & Dirs to archive;;;; @param string $location Real Location; @param string $name Name in Archive;;;;;; @author Nicolas Heimann
* @access private **/
private function addDirDo($location, $name) {
$name .= '/';
$location .= '/';


// Read all Files in Dir
$dir = opendir ($location);
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
// Rekursiv, If dir: FlxZipArchive::addDir(), else ::File();
$do = (filetype( $location . $file) == 'dir') ? 'addDir' : 'addFile';
$this->$do($location . $file, $name . $file);
}
} // EO addDirDo();
}


$za = new FlxZipArchive;
$res = $za->open($zip_file_name, ZipArchive::CREATE);
if($res === TRUE)
{
$za->addDir($the_folder, basename($the_folder));
$za->close();
}
else { echo 'Could not create a zip archive';}


if ($download_file)
{
ob_get_clean();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=" . basename($zip_file_name) . ";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($zip_file_name));
readfile($zip_file_name);


//deletes file when its done...
//if ($delete_file_after_download)
//{ unlink($zip_file_name); }
}

php_zone
پنج شنبه 13 آذر 1393, 16:11 عصر
بعله میشه , این قسمت : // Read all Files in Dir
باید بیای اونجایکه دایرکتوری رو میدی آرایه بدی , بعد اینجا 2-3 تا حلقه دیگه اضافه کنی و در آخر یکیشون کنی !!!!
کد رو بهتر بخونید ....

kabootar_y
جمعه 14 آذر 1393, 01:11 صبح
بعله میشه , این قسمت : // Read all Files in Dir
باید بیای اونجایکه دایرکتوری رو میدی آرایه بدی , بعد اینجا 2-3 تا حلقه دیگه اضافه کنی و در آخر یکیشون کنی !!!!
کد رو بهتر بخونید ....

مشکل من این جاست که این کد رو از سایت دیگری برداشتم ولی اونطوری هم که میخوام نیست. هرچی هم دقت کردم نفهمیدم چیکار باید بکنم که بتونم چند تا فولدر + چند تافایل رو زیپ کنم