-
September 25th, 2011, 16:59
#1
مشکل با فایل zip در php
سلام
من یه برنامه ای دارم مینویسم که یه فولدر میگیره و تمام فایلها و زیر فولدرهای اون رو به یه فایل زیپ تبدیل میکنه. ولی به بعضی از فایلها که میرسه پیغام میده که نمیتونه اون فایل رو به فایل زیپ اضافه کنه و دیگه فایل زیپ رو نمیسازه. در صورتی که خود اون فایل ایرادی نداره و باز میشه. مشکل از کجاست ؟
-
-
September 25th, 2011 16:59
# ADS
-
September 25th, 2011, 17:20
#2
عضو انجمن
پاسخ : مشکل با فایل zip در php
پرمیژن ها شاید؟ از چه کلاسی استفاده میکنید؟
-
-
September 25th, 2011, 17:36
#3
عضو دائم
پاسخ : مشکل با فایل zip در php
دلايل مختلفي ميتونه داشته باشه
چيزهايي كه خودم بهش برخورد كردم مثل فولدرهاي خالي،فايل هاي خالي ، نام هاي غير استاندارد، مشكلات پرميشن و ... هستند
بهرحال همه اين ها بستگي داره كدتون رو چجوري نوشته باشيد ، بدون مشاهده كد نميشه نظر فني داد.
-
-
September 25th, 2011, 18:02
#4
پاسخ : مشکل با فایل zip در php
همه موارد بالا رو چک کردم ولی ایرادی نداره !
کدش این هست: path = "D:/new";
ini_set("max_execution_time", 300);
$zip = new ZipArchive();
if ($zip->open($path . "/my_zip.zip", ZIPARCHIVE::CREATE) !== TRUE)
{
die ("Could not open archive");
}
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path . "/"));
foreach ($iterator as $key=>$value)
{
if ($zip->addFile(realpath($key), $key)) or die ("ERROR: Could not add file: $key");
}
$zip->close();
$file = $path . '/my_zip.zip';
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-type: application/pdf");
header('Content-length: '. filesize($file));
header('Content-disposition: attachment; filename='.basename($file));
readfile($file);
unlink($file);
-
-
September 25th, 2011, 18:21
#5
عضو انجمن
پاسخ : مشکل با فایل zip در php
نمونهی دقیق تر این کد توی php.net بخش معرفی کلاس zip هست که به صورت یک تابع recursive نوشته شده. اونو استفاده کنید.
-
-
September 25th, 2011, 18:33
#6
پاسخ : مشکل با فایل zip در php
من کدهای زیادی رو امتحان کردم اما فقط از همین کد جواب گرفتم. توی php.net هم چیزی پیدا نکردم واسه زیپ کردن. اگه آدرس دقیق صفحه ای که میگین رو بذارین ممنون میشم
-
-
September 25th, 2011, 18:52
#7
عضو انجمن
پاسخ : مشکل با فایل zip در php
کد:
http://php.net/manual/en/book.zip.php
http://php.net/manual/en/ref.zip.php
http://davidwalsh.name/create-zip-php
یه روز دنیا رو کولِـمون حـالا فصل رُکـودمون ...
-
-
September 25th, 2011, 19:31
#8
عضو انجمن
پاسخ : مشکل با فایل zip در php
لینک هایی که دوستمون این بالا دادن کاملا کار شما رو راه میندازه. ولی به هر حال این رو هم ببینید.
-
-
September 26th, 2011, 12:56
#9
پاسخ : مشکل با فایل zip در php
مشکلم حل شد. ممنون از همه. کدی که از سایت stackoverflow.com برام گذاشتین کامل بود
فقط یه سوال دیگه دارم. الان زمانی که فایل زیپ رو میسازه، داخل فایل زیپ به همون ترتیبی که بهش مسیر داده شده، از روت هارد فولدر تو فولدر میسازه و یکی یکی باید فولدرها باز بشه که به فولدر موردنظر که زیپ شده برسم (یعنی از روت هارد، مسیر رو نشون میده تو فایل زیپ). که این از نظر امنیت خیلی مشکل داره. چطور میشه این مشکل رو حل کرد به طوری که زمانی که فایل زیپ رو باز میکنم فقط فولدر مورد نظر که میخوام زیپ بشه رو نشون بده نه اینکه از ابتدای هارد مسیر رو یکی یکی نشون بده ؟؟؟؟
-
-
September 27th, 2011, 12:28
#10
عضو انجمن
پاسخ : مشکل با فایل zip در php
باید برید و متد
رو نگاه کنید, یه آرگومان می گیره که path ها رو relative یا absolute می کنه.
-