وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

فایل PDF به‌جای دانلود در مرورگر باز می‌شود؛ چطور دکمه دانلود را درست کنیم؟

راهنمای رفع باز شدن PDF به جای دانلود، بررسی Content-Disposition، محدودیت لینک download و تنظیم قابل بازگشت برای هاست و سرور.

انتشار:
توسط تیم فنی نت‌آرام
۶ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله فایل PDF به‌جای دانلود در مرورگر باز می‌شود؛ چطور دکمه دانلود را درست کنیم؟ در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
روی دکمه دانلود یک فایل PDF کلیک می‌کنید، اما فایل داخل مرورگر باز می‌شود. ممکن است فکر کنید لینک هاست دانلود خراب است، در حالی که مرورگر فایل را دریافت کرده و تصمیم گرفته آن را نمایش دهد. اگر هدف شما ذخیره‌کردن فایل است، معمولاً با دکمه دانلود در نمایشگر PDF یا گزینه «Save link as» می‌توانید آن را ذخیره کنید. اما صاحب سایت چطور دکمه‌ای بسازد که معمولاً دانلود را پیشنهاد دهد؟
در این راهنما اول مشخص می‌کنیم فایل و لینک سالم‌اند یا نه، بعد رفتار مرورگر و هدر پاسخ را جدا می‌کنیم. نمونه‌ها برای یک PDF آزمایشی هستند و برای انواع دیگر فایل نیز با تفاوت‌هایی کاربرد دارند. رفتار نهایی به مرورگر، تنظیمات کاربر و روش تحویل فایل وابسته است؛ هیچ تنظیمی تضمین نمی‌کند همه دستگاه‌ها دقیقاً یک پنجره یکسان نشان دهند.

۱. اول مطمئن شوید همان فایل موردنظر ارسال می‌شود

یک فایل کوچک و بدون اطلاعات محرمانه به نام guide.pdf در پوشه عمومی هاست دانلود قرار دهید. در DirectAdmin معمولاً می‌توانید از بخش File Manager به مسیر دامنه بروید و آن را بارگذاری کنید. مسیر دقیق ریشه دامنه یا زیردامنه را از تنظیمات حساب پیدا کنید؛ ممکن است ساختار پوشه‌ها در سرویس شما فرق کند. لینک مثال این راهنما چنین است:
کد / دستورhttps://dl.example.com/guide.pdf
به جای آن آدرس واقعی فایل آزمایشی خودتان را قرار دهید. همین آدرس را در پنجره خصوصی مرورگر باز کنید. اگر صفحه خطای ۴۰۴، خطای گواهی یا صفحه ورود دریافت می‌کنید، هنوز به مرحله تنظیم دانلود نرسیده‌اید: مسیر فایل، دامنه و مجوز دسترسی را ابتدا اصلاح کنید. اگر فایل باز می‌شود، از داخل نمایشگر آن را ذخیره و با نسخه اصلی مقایسه کنید. به‌خصوص برای فایل‌های فروشی یا خصوصی، آزمایش را با یک فایل عمومی بی‌خطر انجام دهید.
اگر قبلاً فایل را عوض کرده‌اید ولی نسخه قدیمی دیده می‌شود، آدرس را در مرورگر خصوصی و بدون افزونه امتحان کنید. در صورت استفاده از CDN، کش همان فایل را از پنل خودش پاک کنید یا یک نام آزمایشی تازه بسازید؛ حذف همه کش سایت برای این آزمایش لازم نیست. اگر لینک در صفحه از http به https یا آدرس دیگری منتقل می‌شود، تنظیم نهایی باید روی پاسخی اعمال شود که واقعاً فایل را تحویل می‌دهد.

۲. ببینید سرور درباره فایل چه می‌گوید

در ترمینال رایانه یا سرورِ دارای curl، نشانی آزمایشی را به‌جای مثال قرار دهید:
کد / دستورcurl -I -L https://dl.example.com/guide.pdf
این فرمان ابتدا درخواست سرآیند می‌فرستد و انتقال‌ها را دنبال می‌کند. در آخرین پاسخ دنبال این موارد بگردید:
  • Content-Type: application/pdf می‌گوید محتوا PDF معرفی شده است.
  • Content-Disposition: inline معمولاً از مرورگر می‌خواهد فایل را نمایش دهد.
  • Content-Disposition: attachment معمولاً پیشنهاد ذخیره یا دانلود می‌دهد.
  • نبودن این هدر نیز لزوماً خطا نیست؛ مرورگر ممکن است PDF را خودش باز کند.
اگر چند پاسخ پشت سر هم دیدید، پاسخ آخر مهم است. با این حال، بعضی سرورها برای درخواست HEAD و GET هدر متفاوت می‌فرستند. برای یک فایل کوچک آزمایشی، با فرمان زیر هدر پاسخ واقعی GET را ببینید؛ خود فایل به خروجی ترمینال چاپ نمی‌شود:
کد / دستورcurl -sS -L -D - -o /dev/null https://dl.example.com/guide.pdf
این فرمان فایل را دریافت می‌کند، پس آن را بی‌دلیل روی فایل چندگیگابایتی اجرا نکنید. اگر از Windows PowerShell استفاده می‌کنید، برای استفاده از برنامه curl ممکن است لازم باشد به جای curl عبارت curl.exe را بنویسید. در هر دو روش، نشانی خصوصی دارای توکن را در تیکت عمومی یا عکس منتشر نکنید.

۳. راه ساده برای لینک در همان دامنه

اگر فایل و صفحه از یک مبدأ یکسان ارائه می‌شوند، ویژگی download در لینک HTML می‌تواند به مرورگر پیشنهاد دانلود دهد:
کد / دستور<a href="/guide.pdf" download>دانلود راهنما</a>
این مثال برای حالتی است که فایل واقعاً در همان نشانی و دامنه صفحه باشد. برای گذاشتن آن در ویرایشگر سایت، از بخش ویرایش HTML مجاز استفاده کنید، آدرس را با فایل خودتان عوض کنید و صفحه را ذخیره کنید. سپس با مرورگر معمولی و خصوصی امتحان کنید. اگر فایل روی زیردامنه یا دامنه دیگری مانند dl.example.com است، مرورگر ممکن است این ویژگی را نادیده بگیرد؛ به‌خصوص برای فایل بین‌دامنه‌ای، تنظیم پاسخ سمت تحویل فایل قابل اتکاتر است.

۴. هدر دانلود را برای یک فایل مشخص تنظیم کنید

اگر سرور یا سرویس فایل شما امکان تنظیم هدر پاسخ دارد، برای همان فایل آزمایشی مقدار زیر را تنظیم کنید:
کد / دستورContent-Disposition: attachment
اگر سرویس از Apache پشتیبانی می‌کند، ماژول mod_headers فعال است و تنظیمات .htaccess برای آن پوشه مجاز است، می‌توانید در فایل .htaccess همان پوشه نمونه زیر را اضافه کنید:
کد / دستور<Files "guide.pdf"> Header set Content-Disposition "attachment" </Files>
پیش از تغییر، محتوای فایل موجود را در جای امن کپی کنید. اگر فایل وجود ندارد، یک فایل جدید با همین نام در همان پوشه آزمایشی بسازید؛ تنظیمات قدیمی را پاک یا جایگزین نکنید. نام guide.pdf را با نام فایل خودتان عوض کنید. این مثال برای یک نام ثابت است و همه PDFهای سایت را مجبور به دانلود نمی‌کند. بعد از ذخیره، دوباره هدر GET و خود لینک را امتحان کنید.
اگر پس از ذخیره خطای ۵۰۰ ایجاد شد، تغییر اضافه‌شده را از همان فایل حذف یا نسخه قبلی را بازگردانید و دوباره تست کنید. این خطا می‌تواند به مجاز نبودن دستور یا غیرفعال بودن ماژول مربوط باشد. در هاستی که فایل مستقیماً با Nginx تحویل می‌شود، .htaccess لزوماً پردازش نمی‌شود؛ ساختن چنین فایلی در DirectAdmin به‌تنهایی ثابت نمی‌کند هدر تغییر کرده است. در هاست اشتراکی، مسیر پشتیبانی این است که نشانی فایل آزمایشی و خروجی هدر را همراه درخواست «تنظیم Content-Disposition: attachment برای همین فایل یا مسیر» ارسال کنید. تنظیم سراسری سرور یا تغییر وب‌سرور از حساب معمولی در دسترس نیست.

۵. نتیجه را با چند حالت واقعی تأیید کنید

بعد از تغییر، فرمان هدر GET را دوباره اجرا کنید. اگر پاسخ نهایی attachment دارد ولی مرورگر هنوز نسخه قبل را باز می‌کند، یک فایل کوچک با نام جدید و پنجره خصوصی را امتحان کنید و کش مسیر فایل را بررسی کنید. اگر هدر درست نیست، احتمال دارد فایل از مسیر دیگری، از کش CDN یا از وب‌سروری متفاوت تحویل شود. در خروجی، وضعیت‌های انتقال و نام مقصد را با آدرس مورد انتظار مقایسه کنید.
لینک را روی تلفن و رایانه امتحان کنید و بررسی کنید فایل ذخیره‌شده واقعاً با PDF اصلی باز می‌شود. مرورگر ممکن است بر اساس تنظیمات شخصی کاربر نام یا محل ذخیره را متفاوت انتخاب کند. برای اطمینان از ادامه‌پذیری انتقال فایل‌های بزرگ، آموزش آزمایش ادامه دانلود مسئله دیگری را جداگانه توضیح می‌دهد؛ هدر دانلود به‌تنهایی سالم‌بودن انتقال یا خصوصی‌بودن فایل را تضمین نمی‌کند.
فایل محرمانه را صرفاً با اضافه‌کردن attachment امن فرض نکنید. اگر آدرس عمومی باشد، هرکس آن را داشته باشد ممکن است فایل را دریافت کند. برای فایل فروشی یا اختصاصی به کنترل دسترسی و پیوند مناسب نیاز دارید. اگر هنوز سرویس فایل انتخاب نکرده‌اید، مشخصات هاست دانلود نت‌آرام را با حجم و ترافیک موردنیاز خود مقایسه کنید. جزئیات رفتار هدر را نیز در مرجع Content-Disposition ببینید.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام