PDA

View Full Version : سوال: شروع دانلود یک فایل بعد از لود صفحه.



maXXis
جمعه 06 مرداد 1391, 22:25 عصر
سلام,
یک صفحه دارم می خوام بعد از لود شدن کامل شروع به دانلود یک فایل بکنه. از کد زیر استفاده کردم ولی دانلود فایل قبل از لود شدن صفحه شروع میشه و صفحه دیگه لود نمیشه.


header('Pragma: private');
header("Pragma: no-cache");
header('Content-Description: File Transfer');
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename='.basename($fileatt));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($fileatt));
ob_clean();
flush();
readfile($fileatt);

Unique
جمعه 06 مرداد 1391, 23:03 عصر
منظورتون از Load شدن کامل چیه ؟ اگه منظورتون سمت سرور هستش که شما خودتون دارین دستور header میدین ! تازه دارین Buffer میکنین ! تا اسکریپت تموم نشه چیزی برای کلاینت ارسال نمیشه ! اگه منظورتون کلاینت هست هم باز خودتون دارین توی اسکریپت اصلی فایل را میفرستین !

خلاصه معلوم نیست شما میخواین چی Load بشه ؟ احتمالا دارین آخر اسکریپت که باید یک صفحه کامل نشون داده بشه header های ارسال فایل را هم میفرستین که طبیعیه کاربر محتوای اصلی را نبینه ! شما میتونین اسکریپت ارسال فایل را جدا کنین و با یک Javascript از طریق location درخواست صفحه ارسال فایل برای کلاینت را بکنین ! چون داره فایل دریافت میشه ! صفحه ثابت میمونه برای کاربر.

maXXis
جمعه 06 مرداد 1391, 23:15 عصر
به عنوان مثال, وقتی از سایت فایرفاکس داری نرم افزار فایر فاکس رو دانلود میکنی. دکمه دانلود رو میزنی میره تو یک صفحه دیگه , تو صفحه یک سری اطلاعات نشون میده بعد از چند ثانیه فایل شروع میشه به دانلود. من دقیقاً همچین کاری می خوام انجام بدم.

Unique
یک شنبه 08 مرداد 1391, 02:52 صبح
خوب همونی هست که گفتم ! شما باید کد مربوط با ارسال فایل برای کاربر را بریزی توی یک اسکریپت جدا ! مثلا download.php ! حالا یک صفحه داری به نام show.php که یکسری اطلاعات داری به کاربر میدی و میتونی با یک javascript ساده هم counter درست کنی ! میتونی هم setTimeout بدی و بعدش مقدار location.href را تغییر بدی به download.php ! اینجوری صفحه عوض نمیشه ولی از کاربر خواسته میشه که دانلود را شروع کنه !
کمی باید javascript بدونی ! همین.