ارسال فایل با ماژول X-SendFile

فرض کنید که می‌خواهید یک سایت فروش موزیک یا ارسال فایل بسازید! به‌طورمعمول وقتی می‌خواهید اجازۀ دانلود فایلی را به کاربر بدهید، آن فایل را دریکی از پوشه‌های واقع در دایرکتوری وب Apache قرار می‌دهید و مابقی کار را وب سرور برای شما انجام خواهد داد. کاربر روی لینک مستقیم فایل کلیک می‌کند و دانلود آغاز می‌شود.

ارسال با PHP

فرض کنید که می‌خواهید یک سایت فروش موزیک یا ارسال فایل بسازید! قطعاً لازم است قبل از اینکه امکان دانلود موزیک‌ها برای کاربر فراهم شود، چک کنید که آیا کاربر در سایت ثبت‌نام کرده یا هزینۀ موزیک موردنظر را پرداخت کرده است یا خیر و مواردی ازاین‌دست.

اگر فرض کنیم که در طرف سرور از PHP به‌عنوان تأمین‌کنندۀ فایل برای کاربر استفاده می‌کنید، کدی شبیه این خواهید داشت:

رسال فایل با استفاده از PHP

به این مفهوم که PHP فایل را می‌خواند، header های مناسب را ایجاد کرده و درنهایت فایل را روی بافر خروجی ارسال می‌کند.

ارسال فایل با X-SendFile

بهتر نبود اگر به وب سرور می‌گفتیم که کدام فایل را باید ارسال کند و بقیۀ کارها رو خودش انجام می‌داد؟ خبر خوب این است که می‌توانید این کار را با فعال کردن ماژول mod_xsendfile به‌راحتی انجام دهید.

نکته‌ای که بد نیست بدانید این است که این تکنیک از قابلیت‌های موجود در Lighttp وام گرفته‌شده است و اگر از NGinx استفاده می‌کنید باید از ورودی متفاوتی به نام X-Accel-Redirect بهره بگیرد.

نصب ماژول mode_xsendfile بر روی سرویس‌دهندۀ Ubuntu به شکل زیر است:

sudo apt-get install libapache2-mod-xsendfile

پیکربندی ماژول بسیار ساده است. خطوط زیر را در انتهای فایل پیکربندی Apache وارد کنید:

به‌منظور عملیاتی شدن ماژول، سرویس Apache را یک‌بار خاموش و روشن کنید:

ارسال فایل

پس از فعال کردن ماژول mode_xsendfile، با تنظیم ورودی X-SendFile در بخش header و ارسال آن، بقیه کارها را سرویس‌دهنده برای شما انجام خواهد داد:

ارسال فایل با X-SendFile

👋

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *