یکی از مشکلاتی که وبمسترها و طراحان سایتهای دانلود فیلم و موسیقی و حتی دانلود عکس و 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>
سلام خسته نباشید من دقیقا میخوام عکس این عمل کنم یعنی فایل های pdf زیادی دارم و میخوام کاربر در مرورگر مشاهده کنه نه اینکه دانلود کنه میشه راهنمایی کنید ممنون
سلام
چند راه داره به نظرم. یکی اینکه با تگ ایمبد بزاریدش:
embed src=”file_name.pdf” width=”800px” height=”2100px”
و یکی دیگه اینکه بریزید روی سرویسهایی مثل گوگل درایو که میتونن PDF رو مستقیم نشون بدن و با یه آیفریم اون صفحهی پیشنمایش رو در سایتتون بزارید.
iframe src=”https://docs.google.com/gview?url=https://path.com/to/your/pdf.pdf&embedded=true” style=”width:1000px;height:1000px;”
سرچ کنید احتمالاً روشهای دیگری هم هست. البته دو روش بالا رو من شخصاً تست نکردم ولی فکر میکنم هر دوش اوکی باشه.
با سلام و عرض ادب
ممنون بابت مقاله ای که زحمت کشیدید ولی خواهش می کنم اول خود شما یه تست انجام بدید بعد آموزش را قرار بدید من خصوصیت download را به تگ a اضافه کردم ولی باز بجای دانلود پلی میشود
سلام
بله درست میفرمایید همیشه پاسخگو نیست. در واقع باید فایل htaccess رو ادیت کنید و یه سری کد توش اضافه کنید. بنده تست کردم جواب داد.