{% else-1 %}
//запустив скрипт вы можете выдать удаленный файл через свой сайт.

//а чтобы файл нормально сохранялся, а не с адресом скрипта,

//надо настроить mod_rewrite, чтобы на запрос блаблабла/file.mp3 выдавался этот скрипт

                        
<?php 

//урл удаленного файла

$url = 'http://snippets.pp.ru/1.mp3';



//инициализация сеанса curl

$ch = curl_init($url);



//если клиент запрашивает докачку

if(isset($_SERVER['HTTP_RANGE'])) {

curl_setopt($ch, CURLOPT_RANGE, str_replace('bytes=', '', $_SERVER['HTTP_RANGE']));

}



//бинарные данные

curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);



//функция обратного вызова для заголовков (выдает такие же заголовки как и удаленный сервер)

curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback');



//падаем в случаи ошибки

curl_setopt($ch, CURLOPT_FAILONERROR, 1);



//браузер

curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 5.1; U; ss; MRA 5.4 (build 02647); ru) Presto/2.2.15 Version/10.00');



//accept браузера

$info = array(

'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',

'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8',

'Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1',

);

curl_setopt($ch, CURLOPT_HTTPHEADER, $info);



//запуск

curl_exec($ch);



function curlHeaderCallback($ch, $strHeader) {

//выдаем такой же заголовок, как и удаленный сервер, где лежит файл.

//заголовки идут по порядку

header($strHeader);

return strlen($strHeader);

}
0 73 0
Без комментариев...