2015-01-28 3 views
0

У меня проблема с библиотекой php curl.PHP :: Curl not retrieve image from url

На этом языке: http://i.ebayimg.com/00/s/NTAwWDUwMA==/z/7KcAAOxyRhBS3lhE/$_1.JPG?set_id=8800005007 есть изображение. Для «curl» изображения не существует.

Я очень смущен. После моего метода:

public static function downloadImage($url, $pathToSave = "") 
{ 
    $imageUrl = (string)$url; 
    $ch  = curl_init($imageUrl); 

    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 

    $raw = curl_exec($ch); 
    curl_close($ch); 

    if(file_exists($pathToSave)) 
    { 
     unlink($pathToSave); 
    } 

    $fp = fopen($pathToSave, 'x'); 
    fwrite($fp, $raw); 
    fclose($fp); 

    return $pathToSave; 
} 
+0

Возможный дубликат [Загрузка большого файла с использованием завитка] (http://stackoverflow.com/questions/6409462/downloading-a-large-file-using-curl) –

+0

Если вы попытаетесь выполнить основной скручивание в ssh с помощью путь не будет загружаться, если вы не укажете флаг -o. Я бы рекомендовал посмотреть вышеприведенные параметры и попробовать некоторые из них. –

+0

@LiamSorsby благодарит за ответ. Я вижу ваш пост, и он работает! –

ответ

1

Это работает для меня:

<?php 
    $c = curl_init(); 
    curl_setopt($c,CURLOPT_URL,"http://i.ebayimg.com/00/s/NTAwWDUwMA==/z/7KcAAOxyRhBS3lhE/$_1.JPG?set_id=8800005007"); 
    curl_setopt($c,CURLOPT_RETURNTRANSFER,true); 
    $img = curl_exec($c); 
    file_put_contents('image.jpg',$img); 
?> 

Вполне возможно, что ваш сервер настроен по-разному, и вы должны установить правильную user-agent, как это:

curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36 OPR/27.0.1689.54'); 

... так как многие сайты отказывают в обслуживании файлов, запрошенных CURL.