bevaine
Новичок
HTTP_RANGE нет в PHP
необходимо сделать Download файла с докачкой на PHP:
нашел следующий пример:
Использую 5php, описания для $HTTP_SERVER_VARS["HTTP_RANGE"] или $_SERVER["HTTP_RANGE"] в мануале не нашел. Вообще эта функция должна вовзращать количиство скаченных байт. Чем можно заменить или как?
необходимо сделать 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;
?>
