یکی از مشکلاتی که وب‌مسترها و طراحان سایت‌های دانلود فیلم و موسیقی و حتی دانلود عکس و PDF دارند، این است که با قرار دادن لینک فایل‌ها در تگ <a>، زمانی که کاربر روی آن کلیک می‌کند، فایل به جای دانلود شدن توسط دانلودر مرورگر یا سایر نرم‌افزارهای مدیریت دانلود، مستقیماً باز می‌شود.

در حقیقت Chrome و Mozilla و بسیاری از مرورگرهای مدرن، می‌توانند فایل‌های MP3‌ و MP4 و PDF و همین‌طور عکس‌ها را باز کنند و طبعاً به جای دانلود کردن، فایل را باز می‌کنند. با تغییراتی در تگ a و همین‌طور htaccess می‌توان این مشکل را برطرف کرد که در این مقاله به آن می‌پردازیم.

قرار دادن لینک دانلود در صفحات وب

فرض کنید در اسکریپت سایت خود، کدهای زیر را در موقعیتی از صفحه برای دانلود کردن چند فایل عکس و ویدیو و موسیقی و پی‌دی‌اف قرار داده‌اید که فرمت فایل‌ها به ترتیب PNG و  MP4 و MP3 و PDF است:

ممکن است بخواهید فایل‌ها به صورت دکمه‌ی دانلود در معرض دید بازدیدکننده قرار بگیرد و کد فوق با اضافه شدن سلکتور button به این صورت خواهد شد:

اگر مرورگر کاربر مدرن و بروز باشد، با کلیک روی اغلب لینک‌ها، فایل دانلود نمی‌شود بلکه مستقیماً باز می‌شود.

برای حل کردن مشکل، اولین راه حل و ساده‌ترین راهکار این است که به کاربران سایت آموزش دهید که چطور می‌توانند فایل را دانلود کنند. روش‌های مختلفی برای این مهم وجود دارد که قبلاً به یک مورد جالب اشاره کردیم:

راهکار دوم استفاده از فایل‌های آرشیو با فرمت‌های محبوب مثل Zip است که محدودیت‌ها و مشکلات خاص خود را دارد. به هر حال نمی‌توان تمام فایل‌های روی سرور سایت را به دو صورت زیپ‌شده و معمولی ذخیره کرد و فضای موردنیاز را در حد دو برابر کرد!

راهکار بعدی این است که در تگ <a> از خصوصیت download استفاده کنید تا مرورگرهای امروزی متوجه شوند که فایل برای دانلود کردن قرار داده شده است. کافی است download را در این تگ اضافه کنید، مثل نمونه‌ی زیر:

برای اینکه فایلی که کاربر دانلود می‌کند، نام دلخواه شما را داشته باشد، می‌توانید به خصوصیت download، مقدار نیز بدهید. مقداری که وارد می‌کنید، نام فایل و پسوند آن را مشخص می‌کند. بنابراین لینک دانلود فایل‌ها به این صورت تغییر می‌کند:

اجباری کردن دانلود لینک PDF و MP3 و غیره با ویرایش htaccess

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

به عنوان مثال برای نمایش فایل‌های مخفی در cPanel، از منوی Settings در گوشه‌ی بالای صفحه‌ی File Manager استفاده کنید و تیک گزینه‌ی Show Hidden Files (dotfiles) را بزنید.

اکنون فایل htaccess را با راست‌کلیک کردن و انتخاب گزینه‌ی Edit، برای ویرایش باز کنید. در انتهای فایل متن زیر را اضافه کنید:

<FilesMatch "\.(mp3|mp4|pdf|png)$">

ForceType application/octet-stream

Header set Content-Disposition attachment

</FilesMatch>

به خط اول دستورات فوق توجه کنید که هر چهار پسوند موردبحث در این مقاله را شامل می‌شود. بین هر یک از پسوندهای فایل‌ها، یک | قرار گرفته که به معنی "یا" یا OR است. بنابراین ‌می‌توانید سایر پسوندها را به همین ترتیب اضافه کنید.

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

<FilesMatch "itplanet\.jpg$">

ForceType application/octet-stream

Header set Content-Disposition attachment

</FilesMatch>

در مورد یک فایل خاص هم می‌توانید از دستور زیر استفاده کنید:

<Files test.pdf>

AddType application/octet-stream pdf

</Files>