file_get_contents скачивание картинок

Статус
В этой теме нельзя размещать новые ответы.

new_forward

Профессор
Регистрация
5 Май 2008
Сообщения
673
Реакции
44
Доброго времени суток!

Отправляю на другой сервер урлы картинок которые надо скачать...

Код:
ini_set("user_agent", "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)");
        $d = file_get_contents('http://mysite.ru/photos/i_'.$up_id.'_0.jpg');
        file_put_contents('avto_foto_ads/i_'.$up_id.'_0.jpg',$d);
      
        ini_set("user_agent", "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)");
        $d2 = file_get_contents('http://mysite.ru/photos/i_'.$up_id.'_601.jpg');
        file_put_contents('avto_foto_ads/i_'.$up_id.'_601.jpg',$d2);

Первая скачивается вторая, файл 0 килобайт...Что не так?

Поменял местами, скачался второй, наверно потому что малого размера, в php.ini как описано здесь увеличил настройки Для просмотра ссылки Войди или Зарегистрируйся

И все равно тоже самое...
 
Последнее редактирование:
Доброго времени суток!
Первая скачивается вторая, файл 0 килобайт...Что не так?
Если скачивать CURL-ом, можно получить более подробную информацию - ошибки, хедеры, и тд.
Для начала - просто сделать echo $url и посмотреть, лежит ли по этому адресу картинка.
 
По идеи должно работать. Попробуйте так + пример с CURL'ом
Код:
<?php 
      function download_remote_file($file_url, $save_to)
      {
        $content = file_get_contents($file_url);
        file_put_contents($save_to, $content);
      }
 
ini_set("user_agent", "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"); 
download_remote_file('http://mysite.ru/photos/i_'.$up_id.'_0.jpg', 'avto_foto_ads/i_'.$up_id.'_0.jpg');
download_remote_file('http://mysite.ru/photos/i_'.$up_id.'_601.jpg', 'avto_foto_ads/i_'.$up_id.'_601.jpg');






    function download_remote_file_with_curl($file_url, $save_to)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 0);
        curl_setopt($ch,CURLOPT_URL,$file_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $file_content = curl_exec($ch); curl_close($ch);
        $downloaded_file = fopen($save_to, 'w');
        fwrite($downloaded_file, $file_content);
        fclose($downloaded_file);
    }

    download_remote_file_with_curl('http://mysite.ru/photos/i_'.$up_id.'_0.jpg');
    download_remote_file_with_curl('http://mysite.ru/photos/i_'.$up_id.'_601.jpg');

?>
 
Первая скачивается вторая, файл 0 килобайт...Что не так?
file_get_contents в случае неудачи вернёт false. Что при автоматическом конвертации в строку функцией file_put_contents() даст пустую строку - мы ведь помним, что php язык с динамической типизацией.

curl позволяет сохранять загружаемый url сразу в файл
PHP:
$fp = fopen('avto_foto_ads/i_'.$up_id.'_601.jpg', "w");
....
curl_setopt($ch,CURLOPT_FILE, $fp);
curl_exec($ch);
fclose($fp);

Если при закачке не дёргать туда-сюда curl_init(); curl_close($ch); - это может ускорить загрузку, есть сервера для загрузки с которых это всё таки требуется, но такие сервера скорее исключение из правил.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху