در این مقاله میخواهیم نحوه ی کار کردن با فایل های Zip در فریمورک لاراول رو آموزش بدیم. برای اینکار از یک پکیج به نام zipper استفاده می کنیم. این یک پکیج جامع برای متدهای عملیاتی ZipArchive هاست. مستندات پکیج
نصب و راه اندازی
1 - این پکیج رو به لیست پکیج هاتون در فایل composer.json اضافه کنید.
برای لاراول 5 : "chumper/zipper": "1.0.x"
برای لاراول 4 : "chumper/zipper": "0.5.x"
2 - دستور composer update رو اجرا کنید.
3 - به فایل app/config/app.php برید :
- به بخش providers این رو اضافه کنید : 'Chumper\Zipper\ZipperServiceProvider'
- به بخش aliases این رو اضافه کنید : 'Zipper' => 'Chumper\Zipper\Zipper'
شما هم اکنون میتونید با استفاده از Zipper به کلاس این پکیج دسترسی داشته باشید.
مثال ساده
ابتدا باید فایل هایی که میخواهیم بصورت فشرده zip کنیم رو در یک متغیر بریزیم. برای نمونه اینجا فایلهایی که در مسیر public/files هستند رو در متغیر files$ وارد میکنیم :
$files = glob('public/files/*');
سپس به سادگی میتونیم بصورت زیر یک فایل جدید zip به نام test.zip بسازیم. ما این فایل رو در پوشه ی public قرار میدیم.
Zipper::make('public/test.zip')->add($files)->close();
بصورت پیشفرض پکیج فایل test.zip رو در مسیر اصلی ایجاد می کنه ولی ما اینجا تعیین کردیم که در مسیر public ساخته بشه.
مثال دیگر
بعنوان یک مثال جامع تر اینجا میخواهیم چند عملیات روی فایل ها انجام بدیم :
$zipper = new \Chumper\Zipper\Zipper;
$zipper->make('test.zip')->folder('test')->add('composer.json');
$zipper->zip('test.zip')->folder('test')->add('composer.json','test');
$zipper->remove('composer.lock');
$zipper->folder('mySuperPackage')->add(
array(
'vendor',
'composer.json'
),
);
$zipper->getFileContent('mySuperPackage/composer.json');
$zipper->make('test.zip')->extractTo('',array('mySuperPackage/composer.json'),Zipper::WHITELIST);
$zipper->close();
توجه کنید که بعد از اتمام دستور ساخت فایل zip برای اینکه فایل در دیسک ذخیره بشه باید از دستور ()close استفاده کنید.
شما میتونید از تمام توابع بجز getFileContent, getStatus, close (که در آخر می آیند) بصورت زنجیره ای استفاده کنید.
یکی از مهم ترین قابلیت های این پکیج متد extractTo هست که به شما اجازه میده در حین extract کردن فایل های فشرده بسیار منعطق عمل کنید. پس برای مثال شما میتونید یک متد آپدیت داشته باشید که فایل های ویرایش شده رو بازنویسی کنه.
توابع
(make($pathToFile
ساخت یا باز کردن فایل های آرشیو zip. اگر فایل موجود نباشد یک فایل جدید می سازد.
(add($files/folder
شما میتونید آرایه ای از فایل ها رو اضافه کنید, یا یک فولدر رو که تمام فایل های موجود در آن فولدر اضافه می شوند. همینطور که در مثال اول دیدید ما فولدر files رو اضافه کردیم.
(addString($filename,$content
افزودن یک فایل به zip با مشخص کردن نام و محتوا به عنوان یک رشته string.
(remove($file/s
یک یا چند فایل رو از zip حذف می کنه.
(folder($folder
یک فولدر رو برای اینکه فایل ها رو بهش اضافه کنید یا ازش حذف کنید, مشخص میکنه. برای مثال :
Zipper::make('test.zip')->folder('test')->add('composer.json');
Zipper::make('test.zip')->folder('test')->remove('composer.json');
(listFiles($regexFilter = null
لیست تمام فایل های موجود در آرشیو رو میده (اگر الگوی فیلتری ست نشده باشه). برای فیلتر کردن فایل ها از regexFilter$ استفاده کنید. مطالعه بیشتر
$logFiles = Zipper::make('test.zip')->listFiles('/\.log$/i');
$notLogFiles = Zipper::make('test.zip')->listFiles('/^(?!.*\.log).*$/i');
()home
اشاره گر فولدر رو بازنشانی می کنه.
(zip($fileName
برای مدیریت فایل از ZipRepository استفاده میکنه.
(getFileContent($filePath
محتوای یک فایل zip رو دریافت میکنه. خروجی این محتوا یا false هست.
()getStatus
وضعیت باز فایل zip رو بعنوان یک integer دریافت میکنه.
()close
فایل zip رو می بنده و تغییرات رو اعمال میکنه.
(extractTo($path
محتوای آرشیو zip رو به مکان خاصی منتقل می کنه.
Zipper::make('test.zip')->folder('test')->extractTo('foo');
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید