• 3.1.9
  • کامل شده
  • منقضی شده
این داکیومنت از طرف توسعه‌دهنده ساپورت نمی‌شود، جدیدترین ورژن داکیومنت بزودی ترجمه خواهد شد.

Zip Encoding Class فایل‌ها و داده‌ها را در آرشیو ZIP قرار می‌دهد. این قابلیت برای ساخت بسته دانلود، خروجی گرفتن از چند فایل یا تهیه آرشیو از گزارش‌ها کاربرد دارد. فایل‌های ورودی باید از مسیرهای مجاز انتخاب شوند و نام فایل‌های داخل آرشیو کنترل شود.

ساختار و API اصلی

add_data() داده را با نام دلخواه به آرشیو اضافه می‌کند، add_file() فایل موجود را می‌خواند، read_file() محتوای فایل را اضافه می‌کند، archive() فایل ZIP را روی دیسک می‌سازد و download() آرشیو را به کاربر ارسال می‌کند.

نمونه استفاده

 $this->load->library('zip');
 $this->zip->add_data('readme.txt', 'گزارش سفارش‌ها');
 $this->zip->read_file(FCPATH . 'uploads/report.csv');
 $this->zip->download('reports.zip');

نکته مهم

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

مطالعه مرتبط

برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.

متدهای ZIP

متد یا مفهومکاربرد
add_data()افزودن داده متنی به آرشیو.
add_file()افزودن فایل موجود.
read_file()خواندن فایل و افزودن به آرشیو.
archive()ساخت فایل ZIP روی دیسک.
download()ارسال آرشیو به مرورگر.
clear_data()پاک کردن محتوای آرشیو فعلی.

نحوه استفاده و عیب‌یابی

در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.

در محیط توسعه، مسیر موفق و مسیر خطا را جداگانه آزمایش کنید. ورودی خالی، مقدار نامعتبر، فایل بزرگ، Timeout سرویس خارجی و نبود مجوز نوشتن از سناریوهایی هستند که باید بررسی شوند. منابعی مانند اتصال شبکه و فایل‌های موقت را پس از پایان عملیات آزاد کنید.

در بازبینی کد، ترتیب و نتیجه متدهای add_data()، add_file()، read_file()، archive() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

سایر پست های داکیومنت