2
votes

I used this code for downloading files

$file='test.mp3';
$download_rate = 50; //50 kb/s

if(file_exists($file) && is_file($file))
{
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($file));
    header('Content-Disposition: filename='.$file);

    flush();
    $file = fopen($file, "r");

    while(!feof($file))
    {
        // send the current file part to the browser
        print fread($file, round($download_rate * 1024));
        // flush the content to the browser
        flush();
        // sleep one second
        sleep(1);
    }
    fclose($file);
    }
else {
    echo 'File Not Found';
}

but while downloading the file cannot browse the site till the download completed. this happened with IE and Firefox

Any answers?

1
Not sure but don't call flush(); after defining your headers you only need to call that as you're outputting the file data.user562566
what is the correct answers for this?Lenin Raj Rajasekaran

1 Answers

3
votes

Only time I know this happens is when you have sessions which have not been written. I can't see any sessions here so I'm not sure what is causing it. However, most php download file scripts are used to check for logins so I'm guessing this is the case. if you do have sessions, try session_write_close();