PDA

View Full Version : سوال: زيپ کردن يک فولدر و دانلود آن



imanitc
شنبه 26 اسفند 1391, 09:46 صبح
کدي ميخاستم که يک فولدر روي هاست رو زيپ کنه و سپس اونو بشه دانلود کرد اگر دوستان بتونن راهنمايي کنن ممنون ميشم

soroush.r70
شنبه 26 اسفند 1391, 12:15 عصر
با استفاده از کلاس ZipArchive در PHP به راحتی میتونیم فایلهای فشرده ایجادکنیم.در ادامه یک کد آماده برای فشرده سازی فایلها به وسیله PHP قرار دادم. که میتونید در کدهاتون ازش استفاده کنید.

/* creates a compressed zip file */
function create_zip($files = array(),$destination = '',$overwrite = false) {
//if the zip file already exists and overwrite is false, return false
if(file_exists($destination) && !$overwrite) { return false; }
//vars
$valid_files = array();
//if files were passed in...
if(is_array($files)) {
//cycle through each file
foreach($files as $file) {
//make sure the file exists
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}
//if we have good files...
if(count($valid_files)) {
//create the archive
$zip = new ZipArchive();
if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return false;
}
//add the files
foreach($valid_files as $file) {
$zip->addFile($file,$file);
}
//debug
//echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
//close the zip -- done!
$zip->close();
//check to make sure the file exists
return file_exists($destination);
}
else
{
return false;
}
}


راس استفاده از این تابع باید به صورت زیر عمل کنیم :


$files_to_zip = array(
'preload-images/1.jpg',
'preload-images/2.jpg',
'preload-images/5.jpg',
'kwicks/ringo.gif',
'rod.jpg',
'reddit.gif'
);
//if true, good; if false, zip creation failed
$result = create_zip($files_to_zip,'my-archive.zip');


پارامتر اول نام فایلها به صورت آرایه ، پارامتر دوم نام فایل ZIp و پارامتر سوم اگر true باشه و اگر فایل فشرده از قبل موجود باشه overwrite میکنه.


منبع : phppro.ir