عملیات آرشیو کردن فایل ها در لاراول

ترجمه و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 13 خرداد 98
خواندن در 1 دقیقه
دسته بندی ها : لاراول

در این مقاله میخواهیم نحوه ی کار کردن با فایل های 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');

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید