保存 facebook 个人资料图像时,检查图像文件是否在 curl 中可用。 PHP
Check if image file is available in curl when save facebook profile image. PHP
在我的项目中,当用户从Facebook
登录时,个人资料图片将被保存。这是工作。但是如果没有图像,那么也会保存一个 0 Byte
文件。
如何检查 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;
}
您可以随时使用 curl_getinfo()
查看 curl returned header 信息(更多信息请参见 php.net)
因此,在您的情况下,您可以 curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD)
查看 return 编辑了多少字节。
此外,我认为如果找不到图像,facebook 应该 return 不同的 HTTP 代码,因此您可以尝试 curl_getinfo($curl, CURLINFO_HTTP_CODE)
。如果找到图像,它应该是 200
,如果没有找到,它应该是 404
。
在我的项目中,当用户从Facebook
登录时,个人资料图片将被保存。这是工作。但是如果没有图像,那么也会保存一个 0 Byte
文件。
如何检查 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;
}
您可以随时使用 curl_getinfo()
查看 curl returned header 信息(更多信息请参见 php.net)
因此,在您的情况下,您可以 curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD)
查看 return 编辑了多少字节。
此外,我认为如果找不到图像,facebook 应该 return 不同的 HTTP 代码,因此您可以尝试 curl_getinfo($curl, CURLINFO_HTTP_CODE)
。如果找到图像,它应该是 200
,如果没有找到,它应该是 404
。