- یکشنبه 26 مهر 1405 ساعت 03:00
- 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 را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.