Используется следующий метод для скачивания файла. Но когда скачивается не показывает сколько весит файл на сервере. Кто знает почему? Вот код
public static function download_file($filepath, $mimetype = 'application/octet-stream')
{
$fsize = filesize($filepath);
$ftime = date('D, d M Y H:i:s T', filemtime($filepath));
$filename = basename($filepath);
if(Model_Tools::browserDetecter() == 'firefox') $filename = preg_replace("/\s+/", "_", $filename);
$fd = @fopen($filepath, 'rb');
$range = 0;
if (isset($_SERVER['HTTP_RANGE']))
{
$range = $_SERVER['HTTP_RANGE'];
$range = str_replace('bytes=', '', $range);
list($range, $end) = explode('-', $range);
if (!empty($range))
{
fseek($fd, $range);
}
}
if ($range)
{
header($_SERVER['SERVER_PROTOCOL'].' 206 Partial Content');
}
else
{
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
}
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Last-Modified: '.$ftime);
header('Accept-Ranges: bytes');
header('Content-Length: '.($fsize - $range));
if($range)
{
header("Content-Range: bytes $range-".($fsize - 1).'/'.$fsize);
}
header('Content-Type: '.$mimetype);
$downloaded = 0;
while (!feof($fd) && !connection_status() && ($downloaded < $fsize))
{
echo fread($fd, 512000);
$downloaded += 512000;
flush();
}
fclose($fd);
}