Как скачать файл?
Есть файлик с кучей ссылок вида "http://www.ex.ua/load/**", по которым скачиваются аудио-файлы (если ссылку забить в браузере или использовать с командой wget). Безуспешно пробую сделать скрипт для выгрузки этих файлов из сети (в массиве $links содержатся ссылки):
вариант 1:
foreach ($links as $key => $link) {
$fs = fopen($link, 'rb');
$file = fopen('files/'.($key + 1), 'w');
if ($fs && $file) {
echo($link.' is downloading.<br/>');
while (!feof($fs)) {
fwrite($file, fread($fs, 4096));
}
}
fclose($file);
fclose($fs);
}
вариант 2:
foreach ($links as $key => $link) {
$c = curl_init($link);
$file = fopen('files/'.($key + 1), 'wb');
curl_setopt($c, CURLOPT_FILE, $file);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($c, CURLOPT_HEADER, true);
curl_exec($c);
curl_close($c);
fclose($file);
}
вариант 3:
foreach ($links as $key => $link) {
if (!copy($link, 'files/'.($key + 1))) {
echo $link.' copy\'s error<br/>';
}
}
вариант 4:
foreach ($links as $key => $link) {
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (http://www.googlebot.com/bot.html)');
$output = curl_exec($ch);
$fh = fopen('files/'.($key + 1), 'w');
fwrite($fh, $output);
fclose($fh);
}
вариант 5:
foreach ($links as $key => $link) {
file_put_contents('files/'.($key + 1), file_get_contents($link));
}
И ни один вариант не делает того, что нужно - не скачивает требуемые файлы. При использовании варианта 1, 3, 5 полученные файлы содержат html/css код страницы, на которой содержится ссылка на требуемый файл. При использовании вариантов 2, 4 полученные файлы содержат
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
Так я и не разобрался как же скачать файлы. Может, подскажет кто-нибудь? :)
UPD.
Скрины запрос/ответов при выгрузке файла браузером:
ЗЫ. Не получается выложить в удобном формате (в виде превьюшек/картинок), поэтому помещаю ссылки на скрины.