ایا فایل واقعا دانلود شده

asdb20

Member
سلام
وقتی که یک فایل می خواد دانلود بشه مرورگر پیغام میده و اگه کاربر کنسل کنه چطور باید بفهمیم که کنسل شده و دیگه برای فایل کنتور دانلودی نندازیم
من از مثال php.net استفاده میکنم
PHP:
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
 

k2-4u

Well-Known Member
دستور اجرای کنتر رو آخر کد بگذار
یعنی فیکس قبل از exit
 

asdb20

Member
این کار هم کردم نمیشه
PHP:
 $file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);

/* من کد رو اینجا میزارم ولی بازهم در صورت کنسل کردن کاربر اجرا میشه و یه شماره به کنتور اضافه میشه */   

 exit;
{
 

k2-4u

Well-Known Member
یک کار دیگه هم میشه کرد شما
می تونی با حقله while مقدار رو بگیری از . فایل . بعد
چک کنی هر وقت رسید آخر فایل .
کنتر رو اجرا کنی
PHP:
do{
	if(feof($fp)){ 
		//counter code
	}
	echo fread($fp,1000);

}while(!feof($fp));
 

asdb20

Member
نه اینم نشد
میشه اول هدر ها رو فرستاد اما وقتی کاربر ok میکنه دیگه نمیشه فایل رو خوند مثل اینکه فایل تو سرور کش میشه
 

k2-4u

Well-Known Member
داستان پیچیده شده !!
:-? .
یک سوال . بدون دستور ob_clean (کلا همه دستور های ob)
هم تست کردی؟
 

asdb20

Member
بله کلا همه جوره با ob بدون ob تست کردم ولی نشد هرچی هم سرچیدم هیچی.
 

جدیدترین ارسال ها

بالا