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

Download Helper ارسال فایل به مرورگر را ساده می‌کند. تابع اصلی force_download() نام فایل و محتوای آن را دریافت می‌کند و Headerهای لازم برای دانلود را می‌فرستد. می‌توانید محتوای فایل را از حافظه یا از فایل موجود بخوانید.

کاربرد و توابع اصلی

پارامتر اول نامی است که کاربر هنگام دانلود می‌بیند و پارامتر دوم محتوای فایل است. مقدار TRUE در پارامتر سوم می‌تواند خروجی را به‌صورت Base64 تفسیر کند. مسیر فایل را از ورودی خام کاربر دریافت نکنید.

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

 $this->load->helper('download');
 $csv = "id,name\n1,Keyboard\n2,Mouse";
 force_download('products.csv', $csv);

نکته مهم

ورودی را اعتبارسنجی کنید و خروجی را متناسب با محل نمایش Escape کنید. این Helper جایگزین کنترل دسترسی و سیاست امنیتی برنامه نیست.

مطالعه مرتبط

برای ادامه مطالعه، کوئری، SQL Injection را ببینید.

تابع Download Helper

متد یا مفهومکاربرد
force_download($filename, $data)ارسال محتوا به‌صورت فایل دانلودی.
filenameنامی که در مرورگر نمایش داده می‌شود.
dataمحتوای فایل یا داده Base64.
headersHeaderهای دانلود توسط Helper مدیریت می‌شوند.
securityمسیر و مجوز فایل را پیش از ارسال بررسی کنید.

نکات استفاده در پروژه

Helperها معمولاً وضعیت داخلی نگه نمی‌دارند و برای تبدیل یا تولید مقدارهای کوچک مناسب‌اند. آن‌ها را فقط در Controller یا فایل‌های View بارگذاری نکنید، اگر در چند بخش برنامه استفاده می‌شوند می‌توانید در تنظیمات Autoload قرار دهید. در عین حال، بارگذاری همه Helperها به‌صورت سراسری ضرورتی ندارد و بهتر است وابستگی هر بخش روشن بماند.

در زمان استفاده، ورودی را از نظر نوع و محدوده بررسی کنید، خروجی HTML را متناسب با محل نمایش Escape کنید و مسیر فایل را از داده خام کاربر نسازید. اگر تابعی به دیتابیس، شبکه یا وضعیت Session وابسته است، آن رفتار دیگر یک Helper ساده نیست و بهتر است در Service یا Library مستقل قرار بگیرد.

در بازبینی کد، ترتیب و نتیجه متدهای force_download($filename, $data)، filename، data، headers را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

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