[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скачивание и отдача файла
5maks5
Здравствуйте. Подскажите как можно реализовать. Есть два сервера А, В и конечный пользователь. На сервере В нужна функция которая будет брать файл с сервера А и отдавать конечному пользователю. Желательно без сохранения у себя.

Задача не сложная, но есть НО. Сервер А отдает файл только авторизованному пользователю. Т.к. при запросе файла нужно посылать куки.

Скрипт авторизации я написал, куки имею. Только не знаю как забирать файл с сервера А и отдавать пользователю. При этом использовать куки и желательно без сохранения у себя.

Скажу сразу что файлы это обычные 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);


_____________
Где исходники вселенной?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.