یک اسکریپت PHP بنویسید که یک فایل باینری (مثلاً PDF) را از سرور به عنوان دانلود به مرورگر ارسال کند و قبل از ارسال هدرها با استفاده از ob_end_clean() بافر خروجی را پاک کند.

3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:50

0.0

برای حل: ابتدا وجود فایل را با file_exists بررسی کنید، سپس اگر بافر خروجی فعال است با ob_end_clean() آن را پاک کنید تا هیچ خروجی اضافی هدرها یا محتوای فایل را خراب نکند. هدرهای مناسب مثل Content-Type، Content-Disposition و Content-Length را با تابع header() ارسال کنید و سپس با readfile() یا fopen+fpassthru فایل را به خروجی بفرستید. این مسئله مربوط به I/O & Files و Web Development است؛ نکات مفید شامل بررسی مجوز فایل، استفاده از readfile برای فایل‌های کوچک و fpassthru/loop خواندن برای فایل‌های بزرگ و فراخوانی exit بعد از ارسال محتواست.

توسط پژوهشگر در 202 روز قبل ساعت 02:50
دسته بندی ها: PHP PHP for beginner
arash در 202 روز قبل ساعت 08:20

نکته مفید: قبل از ارسال، وجود فایل را با file_exists بررسی کنید و اگر خروجی بافر فعال است با ob_end_clean() آن را پاک کنید تا هدرها و محتوای اضافی خراب نشوند. سپس هدرهای مناسب مانند Content-Type، Content-Disposition و Content-Length را با header() ست کنید و از readfile() برای ارسال فایل استفاده نمایید. برای فایل‌های بزرگ‌تر می‌توانید با fread/Fpassthru یا یک حلقه خواندن، فایل را به خروجی بفرستید و در نهایت با exit() پایان دهید. همچنین به امنیت مسیر فایل و مجوزهای دسترسی توجه کنید تا از دسترسی غیرمجاز جلوگیری شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری