HTTP_RANGE нет в PHP

bevaine

Новичок
HTTP_RANGE нет в PHP

необходимо сделать Download файла с докачкой на PHP:
нашел следующий пример:
Код:
<?
// dl.php
// Скрипт для закачки файлов из любого места файловой системы (не только из document_root web-сервера).
//  Закачиваемые файлы должны быть доступны на чтение пользователю, от которого работает web-сервер.
//  Поддерживается докачка файлов.
//  Usage: [url]http://your.server.ext/some-path/dl.php?cd=path_to_file&fn=file_name[/url]

$filename = $cd."/".$fn;
if (!file_exists($filename)) {
   header ("HTTP/1.0 404 Not Found");
   exit; }
$fsize = filesize($filename);
$ftime = date("D, d M Y H:i:s T",filemtime($filename));
$fd = fopen($filename, "rb");
if (!fd) {
   header ("HTTP/1.0 403 Forbidden");
   exit;}
// Если запрашивающий агент поддерживает докачку
if ($HTTP_SERVER_VARS["HTTP_RANGE"]) {
   $range = $HTTP_SERVER_VARS["HTTP_RANGE"];
   $range = str_replace("bytes=","",$range);
   $range = str_replace("-","",$range);
   if ($range) {fseek($fd,$range);}
   }
$content = fread($fd, filesize($filename));
fclose($fd);
$etag = md5($filename.$fsize.$ftime);
if ($range) {header("HTTP/1.1 206 Partial Content");}
else           {header("HTTP/1.1 200 OK");}
header("Content-Disposition: attachment; filename=".$fn);
header("Last-Modified: ".$ftime);
header("ETag: "".$etag.""");
header("Accept-Ranges: bytes");
header("Content-Length: ".($fsize-$range));
header("Content-Range: bytes ".$range."-".($fsize-1)."/".$fsize);
header("Content-type: application/octet-stream");
print $content;
exit;
?>
Использую 5php, описания для $HTTP_SERVER_VARS["HTTP_RANGE"] или $_SERVER["HTTP_RANGE"] в мануале не нашел. Вообще эта функция должна вовзращать количиство скаченных байт. Чем можно заменить или как?
 

Фанат

oncle terrible
Команда форума
описание HTTP_RANGE следует искать в мануале по HTTP.
$_SERVER["HTTP_RANGE"] - это не функция.
и никому ничего не должна.

что ты имеешь в виду под словом "количиство скаченных байт"?

-~{}~ 29.10.05 16:23:

ты вообще комментарии в этом коде читал?
 

bevaine

Новичок
приведенные выше пример у меня не работает выдает, что не найден индекс HTTP_RANGE, $HTTP_SERVER_VARS["HTTP_RANGE"] - выдает размер файла в байтах, посылается download мененджером, чтобы php знало откуда начинать докачку, как поступить, если $HTTP_SERVER_VARS["HTTP_RANGE"] не работает???
 

Frol

Новичок
bevaine
ты читаешь только последнии строчки сообщений?
 

Фанат

oncle terrible
Команда форума
с чего ты взял, что download мененджер тебе что-то посылает?
 

white phoenix

Новичок
$_SERVER это массив который заполняется заголовками автоматически. если передать "Myheader: myvalue", то будет $_SERVER["Myheader"] == "myvalue". сделай info.php:
<?php phpinfo(); ?>
И скачай info.php менеджером, сразу будет видно какие заголовки он отправил.
 
Сверху