Не могу скачать файл по прямой ссылке

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