Задача не сложная, но есть НО. Сервер А отдает файл только авторизованному пользователю. Т.к. при запросе файла нужно посылать куки.
Скрипт авторизации я написал, куки имею. Только не знаю как забирать файл с сервера А и отдавать пользователю. При этом использовать куки и желательно без сохранения у себя.
Скажу сразу что файлы это обычные mp3.
P.s. при заборе файла желательно использовать curl.
Есть такой код, но работает он медленно и не так как нужно. :(
function remoteFilesize($url) {
ob_start();
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
$ok = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = '/Content-Length:\s([0-9].+?)\s/';
preg_match($regex, $head, $matches);
return isset($matches[1]) ? $matches[1] : "unknown";
}
$size = remoteFilesize('http://site.ru/123.mp3');
$url = 'http://site.ru/123.mp3';
$path = '111.mp3';
$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookies);
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookies);
$data = curl_exec($ch);
curl_close($ch);
header("Content-Length: {$size}");
header('Content-Type: audio/mpeg');
readfile($path);
unlink($path);
_____________
Где исходники вселенной?