2016-09-21 39 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 Photoshop3.08BIM g1SQQYlr'。为什么是这样? – Arun

+0

@阿伦:这是一个JPEG图像的二进制数据的开始。所以你必须在某处输出接收到的数据。 – CBroe

相关问题