2016-09-21 8 views
0

В моем проекте, когда пользователь входит в систему с Facebook, изображение профиля будет сохранено. Это работает. Но если нет изображения, то также сохраняется файл 0 Byte.Проверьте, доступен ли файл изображения в завитке при сохранении изображения профиля facebook. PHP

Как я могу проверить URL-адрес содержит изображение и сохранить только тогда, когда изображение доступно

код PHP образец приведен ниже

function DownloadImage($url, $dest){ 
    $curl = curl_init($url); 
    $fp = fopen($dest, 'wb'); 
    curl_setopt($curl, CURLOPT_FILE, $fp); 
    curl_setopt($curl, CURLOPT_HEADER, false); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_exec($curl); 
    curl_close($curl); 
    fclose($fp);  
} 

try{ 
    $type='large'; 
    $social_id='1234'; 
    DownloadImage('https://graph.facebook.com/'.$social_id.'/picture?type='.$type.'&access_token=[your access token]', $type.'.jpg'); 


} 
catch(Exception $errr){ 
    echo $errr; 
} 

ответ

2

Вы всегда можете проверить локон возвращенную информацию заголовка с curl_getinfo() (более на php.net)

Так что в вашем случае вы можете curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD) посмотреть, сколько байт переписано обернулся.

Также я думаю, что facebook должен возвращать разные HTTP-коды, если изображение не найдено, поэтому вы можете попробовать curl_getinfo($curl, CURLINFO_HTTP_CODE). Это должно быть 200, если найденное изображение и 404, если нет.

+0

Благодарим вас за ответ. Но он показывает некоторые строки на странице, например '0 JFIF Photoshop 3.08BIM g1SQQYlr'. Почему это так? – Arun

+0

@Arun: Это начало двоичных данных изображения JPEG. Поэтому вы должны где-то выводить полученные данные. – CBroe