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

File Uploading Class دریافت فایل از فرم و انتقال آن به مسیر سرور را مدیریت می‌کند. این کلاس تنظیماتی برای مسیر مقصد، پسوندهای مجاز، اندازه فایل، ابعاد تصویر، تغییر نام و حفظ یا حذف نام اصلی دارد. اعتبارسنجی فایل باید پیش از ذخیره‌سازی انجام شود.

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

تنظیمات با initialize() اعمال می‌شوند و do_upload() نام فیلد فایل فرم را دریافت می‌کند. در صورت موفقیت، data() اطلاعات فایل ذخیره‌شده را برمی‌گرداند و در صورت خطا می‌توانید display_errors() را برای نمایش پیام دریافت کنید.

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

 $config = array(
     'upload_path' => FCPATH . 'uploads/',
     'allowed_types' => 'jpg|jpeg|png|pdf',
     'max_size' => 2048,
     'encrypt_name' => TRUE
 );
 $this->load->library('upload', $config);
 if ($this->upload->do_upload('document')) {
     $file = $this->upload->data();
 } else {
     $error = $this->upload->display_errors();
 }

نکته مهم

پسوند فایل به‌تنهایی معیار امنیت نیست. فایل را خارج از مسیر عمومی یا با کنترل دسترسی ذخیره کنید، MIME واقعی را بررسی کنید و نام فایل را از ورودی کاربر نگیرید.

مطالعه مرتبط

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

گزینه‌های مهم آپلود

متد یا مفهومکاربرد
upload_pathمسیر مقصد ذخیره فایل.
allowed_typesفهرست پسوندهای مجاز.
max_sizeحداکثر اندازه فایل بر حسب کیلوبایت.
max_width و max_heightمحدودیت ابعاد تصویر.
encrypt_nameساخت نام تصادفی برای فایل.
do_upload($field)اجرای آپلود برای نام فیلد فرم.
data() و display_errors()دریافت اطلاعات فایل یا خطاها.

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

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

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

در بازبینی کد، ترتیب و نتیجه متدهای upload_path، allowed_types، max_size، max_width و max_height را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

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