Не могу скачать файл по прямой ссылке
1.
varloc (01.11.2012 / 20:54)
copy в исходнике пишет html код какой то, курл в исходный файл пишет 400-ую ошибку.
Пишу ссылку в браузер, всё работает.
http запрос такой примерно
http://bla-bla.ru/a/1/2/3/asdads.3gp
GET /a/1/2/3/asdads.3gp HTTP/1.1
Host: bla-bla.ru
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
ответ
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 01 Nov 2012 16:41:15 GMT
Content-Type: video/3gpp
Content-Length: 110489548
Last-Modified: Thu, 01 Nov 2012 04:15:08 GMT
Connection: keep-alive
Keep-Alive: timeout=20
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: no-cache
Accept-Ranges: bytes
Что делать? )
2.
varloc (01.11.2012 / 22:02)
Помогите пож. что я не так делаю?..
3.
Петр (02.11.2012 / 08:06)
То есть, возвращаются только заголовки? А сам код можешь написать?
4.
varloc (02.11.2012 / 11:33)
Нет, это я написал заголовки которые посылает и принимает браузер, когда ссылку вбиваешь в него. Код копирования через copy обычный, а через curl код такой
function curl_get_remote( $url, $local_filename )
{
if( ! ($fh = @fopen($local_filename, 'wb')) )
return false;
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_NOPROGRESS, 0 );
curl_setopt( $ch, CURLOPT_FILE, $fh );
curl_exec( $ch );
fclose( $fh );
return true;
}
С кодом всё в порядке, я и в других скриптах его использую..
5.
Петр (02.11.2012 / 14:28)
Так, а что мешает поставить те же заголовки, что и у браузера, в частности UA? Через CURLOPT_HTTPHEADER или, если copy, то через
stream_context_create. Возможно, проблема в этом.
6.
varloc (02.11.2012 / 17:31)
5.
Im-ieee, пробывал... Заметил вот что, если написать адрес в функцию "руками", а не через $, то файл скачивается, переменную проверяю, в ней урл ) так что не так..?
7.
varloc (02.11.2012 / 17:46)
Вот, что вписывается в файл
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
8.
Петр (02.11.2012 / 17:50)
Возможно, строка $url содержит какие-либо посторонние символы. file_put_contents('file.txt', $url); и смотри, что в этой переменной.
9.
varloc (02.11.2012 / 18:03)
8.
Im-ieee, О! спс большое, в конце $ оказался перенос строки, что не удивительно... Я урл взял из ответа на заголовок, а про "\r\n" забыл..( большое спс!!!
URL:
https://visavi.net/topics/35132