Файл: template/load.php
Строк: 56
<?
ignore_user_abort(TRUE);
set_time_limit(300);
$song = isset($_GET['song']) ? intval($_GET['song']) : 0;
define ('DATA_FILE','../music/'.$song.'.dat');
if (!file_exists(DATA_FILE)) die(); // нет файла-нечегоделлать!
function ___load($file,$max_length = 0) // функция копирования файла с ограничением длины
{
if (ob_get_level()) {ob_end_clean();} // если этого не сделать файл будет читаться в память полностью!
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$a_data=unserialize(file_get_contents(DATA_FILE));
$fp = fopen($a_data['url'],"rb");
if ($fp )
{
$a_header = stream_get_meta_data($fp); // получили заголовки
foreach($a_header["wrapper_data"] as $v)
if (stristr($v,"content-length"))
{
$v = explode(":",$v);
$a_data['size'] = intval(trim($v[1])); // размер файла
if ($a_data['size'] > 0)
{
//file_put_contents(DATA_FILE,serialize($a_data)); // сохраним размер
break;
}
}
header('Content-Length: ' . $a_data['size']);
$fs = fopen($file,"wb"); // открываем файл на запись
if ($fs)
{
$a_data['status'] = 2; // load
$cur_size=0;
while(($bin = fread($fp, 1024)) != FALSE)
{
$cur_size+=1024;
if ($max_length > 0 && $cur_size > $max_length) // превысили разрешенный размер
{
$a_data['status'] = -2;
break;
}
fwrite($fs,$bin);
print($bin);
}
fclose($fs);
} //else $a_data['status'] = -1; // error
fclose($fp);
} //else $a_data['status'] = -1; // error
//file_put_contents(DATA_FILE,serialize($a_data));
}
___load('../music/'.$song.'.mp3',0);
?>