انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => شبکه و سرویس‌ دهنده‌ها => نویسنده: alih_net در 26 تیر 1394، 01:46 ب‌ظ

عنوان: تنظیم وب سرور جهت دانلود فایل و نه اجرای آن (حل شد)
ارسال شده توسط: alih_net در 26 تیر 1394، 01:46 ب‌ظ
سلام دوستان
همینطور که میدونید مرورگر ها قابلیت این رو دارند که فایل های pdf ، Mp3 و ... رو اجرا کنند .
حالا سوال اینجاست که چطور میشه از طرف وب سرور کاری کرد که فایل ها در مرورگر اجرا نشن و کاربر فقط بتونه اون رو دانلود کنه (مثل همین انجمن در فایل های پیوست - البته با این تفاوت که لینک مستقیم باشه )
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن
ارسال شده توسط: khorsand14 در 26 تیر 1394، 04:20 ب‌ظ
دوست من این مورد به تنظیمات سرور مربوط نیست به تنظیمات CMS‌شما مربوط هست یا اسکریپتی که اجرا کردید
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن
ارسال شده توسط: alih_net در 26 تیر 1394، 04:49 ب‌ظ
دوست من این مورد به تنظیمات سرور مربوط نیست به تنظیمات CMS‌شما مربوط هست یا اسکریپتی که اجرا کردید
تنظیمات cms چیزی جز تغییر یک سری فایل روی سرور نیست . مثلا وقتی ساختار لینک های وردپرس رو تغییر میدی نمیتونی بگی این مربوط به تنظیمات سرورنیست ! برعکس این از تغییر فایل .htaccess وب سرور ناشی میشه
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن
ارسال شده توسط: { AliReaza } در 26 تیر 1394، 05:04 ب‌ظ
سلام دوستان
همینطور که میدونید مرورگر ها قابلیت این رو دارند که فایل های pdf ، Mp3 و ... رو اجرا کنند .
حالا سوال اینجاست که چطور میشه از طرف وب سرور کاری کرد که فایل ها در مرورگر اجرا نشن و کاربر فقط بتونه اون رو دانلود کنه (مثل همین انجمن در فایل های پیوست - البته با این تفاوت که لینک مستقیم باشه )
دوست عزیز آیا در این رابطه به اندازه کافی جستجو کردید؟

برای مستقیم بودن آدرس شما می توانید از .htaccess استفاده کنید. ( که البته توصیحه نمیشه )

اما یکی از روش های مورد علاقه من که در خیلی جاها برای جلوگیری از دسترسی کاربران به File های دیگر و حتی مخفی کردن آدرس File استفاده میشود، استفاده از حالت Force a File Download هست.

برای مثال در PHP:
https://secure.php.net/manual/en/function.readfile.php
https://stackoverflow.com/questions/1465573/forcing-to-download-a-file-using-php
http://webdesign.about.com/od/php/ht/force_download.htm
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن
ارسال شده توسط: alih_net در 26 تیر 1394، 05:20 ب‌ظ
بله اما درست نه ! چون ایده خاصی نداشتم   :D

الان جوابم رو گرفتم .

از اونجا که تعداد فایل ها زیاده و بیشتر هم میشه با .htaccess داخل دایرکتوری مورد نظرم لینک های مستقیم  رو به یک فایل فرستادم که اون فایل url رو بامتد get میگیره و به readfile میفرسته .  \\:D/
فقط چرا این روش توصیه نمیشه؟
ممنون از شما
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن
ارسال شده توسط: { AliReaza } در 26 تیر 1394، 06:25 ب‌ظ
فقط چرا این روش توصیه نمیشه؟
برای من خیلی پیش اومده که در بعضی Server ها به شکلی Config انجام دادن که باید بعضی از دستورات یا Module ها را تغییر داد.

و اگر از دستور یا Moduleیی استفاده شود که مورد تایید Server نباشد با خطای Server Error 500 مواجعه می شوید، و باید وقت بذارید تا مشکل را برطرف کنید.

اما در PHP تا حالا این مشکل را نداشتم. و تا الان در برنامه هایی که نوشتم فقط نیاز بوده که ارتباط بانک اطلاعاتم را به PDO تبدیل کنم و تمام.  \\:D/
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن
ارسال شده توسط: alih_net در 26 تیر 1394، 06:27 ب‌ظ
ممنون علیرضا عزیز بابت وقتی که گذاشتی
البته من از این بابت خیالم راحته چون سرور خودمه  ;D
بازم ممنون
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن (حل شد)
ارسال شده توسط: alih_net در 28 تیر 1394، 11:58 ق‌ظ
راه ساده تری که پیدا کردم :
https://www.timewasters-place.com/how-to-force-file-downloading-with-htaccess/
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن (حل شد)
ارسال شده توسط: { AliReaza } در 28 تیر 1394، 12:53 ب‌ظ
راه ساده تری که پیدا کردم :
https://www.timewasters-place.com/how-to-force-file-downloading-with-htaccess/
To use this, your webserver has to have mod_headers activated (It is most likely already included in Apache, but not activated): Apache Module mod_headers
همانطور که اشاره شده باید mod_headers در Apache فعال بشه، که معمولا فعال نیست. ( تجربه شخصی  ](*,) )

البته چون Server برای خودتون هست، شما مشکلی ندارید.
اما کسانی که امکان Config کردن ندارند.....  :'(
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن (حل شد)
ارسال شده توسط: Ako0ri در 28 تیر 1394، 12:59 ب‌ظ
اگر فایلهاتون حجیمه از php برای دانلود فایل استفاده نکنید
تنظیمات مورد نظر هم مربوط به سرور نیست بلکه مربوط به وب سرور هست که برای بازدهی و سرعت بهتر پیشنهاد میکنم از وب سرور nginx استفاده کنید
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن (حل شد)
ارسال شده توسط: { AliReaza } در 28 تیر 1394، 01:09 ب‌ظ
اگر فایلهاتون حجیمه از php برای دانلود فایل استفاده نکنید
من که تاحالا مشکلی نداشتم و حتی تا 2GB هم به من جواب داده، حتی با resume.

می تونید بگین به چه علت می فرمایید " استفاده نکنید " ؟؟؟

تنظیمات مورد نظر هم مربوط به سرور نیست بلکه مربوط به وب سرور هست...
درسته برای WebServer هست. اما آیا می توان بدونه دسترسی کافی به Server تنظیمات WebServer را تغییر داد؟
عنوان: پاسخ : تنظیم وب سرور جهت دانلود فایل و نه اجرای آن (حل شد)
ارسال شده توسط: alih_net در 28 تیر 1394، 01:22 ب‌ظ
راه ساده تری که پیدا کردم :
https://www.timewasters-place.com/how-to-force-file-downloading-with-htaccess/
To use this, your webserver has to have mod_headers activated (It is most likely already included in Apache, but not activated): Apache Module mod_headers
همانطور که اشاره شده باید mod_headers در Apache فعال بشه، که معمولا فعال نیست. ( تجربه شخصی  ](*,) )

البته چون Server برای خودتون هست، شما مشکلی ندارید.
اما کسانی که امکان Config کردن ندارند.....  :'(

حق باشماست . همینطور که گفتم سرور دست خودمه و مشکلی ندارم باهاش

تنظیمات مورد نظر هم مربوط به سرور نیست بلکه مربوط به وب سرور هست که برای بازدهی و سرعت بهتر پیشنهاد میکنم از وب سرور nginx استفاده کنید

ممنون از نظرت . منم تصمیم گرفتم از انجین اکس به صورت reverse proxy استفاده کنم . فقط  آیا به صورت پیشفرض force download در nginx فعاله یا نه ؟

نقل‌قول
می تونید بگین به چه علت می فرمایید " استفاده نکنید " ؟؟؟
فکر میکنم در طول دانلود با این متد علاوه بر وب سرور ، php هم درگیره و هر چی فایل حجیم تر باشه زمان این درگیری بیشتر میشه درنتیجه لود سرور بالا میره