اجبار کاربر به دانلود فایل در مرورگر
گاهاً پس از راهاندازی وبسایت، قصد ارائه فایلی به بازدیدکنندگان وبسایت دارید. این فایل میتواند یک فایل متنی، صوتی و یا ویدئویی باشد. شما میتوانید تعیین کنید که واکنش مرورگر کاربر به هنگام مواجهه با این فایل چگونه باشد. اینکه این فایل را در مرورگر باز کند، مثلا فایل ویدئویی را اجرا کند و یا اقدام به دانلود فایل کند. چیزی که قرار است در این مقاله توضیح دهیم، همان مورد دوم است؛ یعنی اینکه قصد داریم کاربر فایل را دانلود کرده و یک نسخه از آن را در سیستمش ذخیره نماید. برای انجام این کار نیازمند افزودن چند خط کد به فایل .htaccess هستیم. در ادامه به شرح انجام این کار میپردازیم.
دانلود اجباری فایل از طریق .htaccess
با انجام موارد زیر، از طریق فایل .htaccess میتوان مرورگر را اجبار به دانلود فایل با پسوند خاص کرد:
1- فایل .htaccess را یافته و جهت ویرایش باز کنید.
2- کد زیر را در فایل .htaaccess قرار دهید. این کد موجب میشود تا بازدیدکننده آن نوع فایل را دانلود کند. برای دانلود هر نوع فایل با پسوند خاص لازم است یک خط کد در فایل .htaccess قرار دهید. در این مقاله ما بازدیدکننده را ملزم به دانلود فایلهای ویدئویی با پسوند .mov و فایلهای متنی و سندی با پسوند .pdf و .doc میکنیم:
AddType application/octet-stream .mov AddType application/octet-stream .pdf AddType application/octet-stream .doc
اجبار به دانلود فایل مورد نظر از طریق کدهای PHP
مورد فوق تنها موجب میشد تا گروهی از فایلها با پسوندهای خاص دانلود شوند. از طریق کدهای PHP میتوانید (ضمن تغییر HTTP Headers) موجب دانلود فایل مورد نظر از طریق مرورگر کاربر شوید. پس به این وسیله Browser کاربر را ملزم به دانلود فایل به جای لود یا نمایش آن میکنید. این روش برای فایلهای نظیر PDF، فایلهای Document، تصاویر و فایلهای ویدئویی که تمایل دارید کاربر به جای مشاهدهی آنها دریافتشان کند، بسیار مناسب است. با استفاده از PHP میتوانید از مزیت این تابع بهره ببرید:
$file_url = 'http://www.example.com/file.pdf'; header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); readfile($file_url) exit();
در خط دوم با تعریف Content-Type، مرورگر مجبور به دانلود فایل میشود. در خط چهارم با استفاده از Content-disposition، اسم فایل جهت ذخیره ارسال میگردد. در نهایت در خط پنجم خروجی نهایی جهت شروع دانلود ایجاد میشود.