докачка файлов

Frutik

1024-й
докачка файлов

пробую написать докачку больших файлов. наваял такое:
PHP:
	$fname = "test.txt";
	$fpath = "./base/links/" . $fname;

	header("Content-Type: application/force-download");
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: " . filesize($fpath));
	header("Content-Disposition: attachment; filename=$fname");

	$handle = fopen($fpath, "r");
	if ( isset(getenv("HTTP_RANGE")) ) {
	    fseek($handle, intval(substr(getenv("HTTP_RANGE"), 6)));
	}
	fpassthru($handle);
	fclose($handle);
а давнлоадер всегда начинает файл тянуть сначала...

в чем я не прав?
 

Frutik

1024-й
да, кстати... забыл сказать
HTTP_RANGE (если он реально посылается менеджером скачивания) в скрипте доступен. я проверял
 

Larson

Новичок
Какой такой давнлоадер? который у ИЕ выскакивает? Если да, то по-моему тут ничего не исправишь - такой он масдай.
 

Frutik

1024-й
да не... x-downloader... втом то и дело что он докачивает... если файл выкачивать а не отдавать его скриптом...
тут или алгоритм кривой... или сегодня не мой день :)
 

Profic

just Profic (PHP5 BetaTeam)
Frutik:
А ты погляди на те заголовки, которые передает/принимает апач/качалка....
Дело в том, что при наличии заголовка RANGE сервер возвращает заголовки в таком виде
Content-Range: bytes _позиция_старта_-_позиция_завершения_/_размер_файла
Content-Length: _сколько_качать_
т.е.
Content-Range: bytes 0-4200/4301
Content-Length: 4201

Теперь понятно?
 
Сверху