【发布时间】:2014-11-18 01:55:40
【问题描述】:
我正在尝试使用 cURL 将 facebook api 提供的图像 url 转换为 base64 格式。
api 提供了一个这样的 url:
https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-xfp1/v/t1.0-9/p180x540/72099_736078480783_68792122_n.jpg?oh=f3698c5eed12c1f2503b147d221f39d1&oe=54C5BA4E&__gda__=1418090980_c7af12de6b0dd8abe752f801c1d61e0d
问题是url只能与url字符串中包含的oh、oe和gda参数一起使用,没有直接的img url。删除参数会将您带到 facebook 错误页面。
使用参数化的 url,我的 curl_exec 没有得到正确的图像数据。有没有办法从 facebook 获取 base64 数据,或者我可以做些什么来访问给定参数化 url 的纯图像 url?
这是我的解码脚本的样子:
header('Access-Control-Allow-Origin: *');
$url = $_GET['url'];
try {
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 3);
$result = curl_exec($c);
curl_close ($c);
if(false===$result) {
echo 'fail';
} else {
$base64 = "data:image/jpeg;charset=UTF-8;base64,".base64_encode($result);
echo $base64;
}
} catch ( \ErrorException $e ) {
echo 'fail';
}
【问题讨论】:
-
您的 curl 命令很可能实际上并没有访问正确的 URL(即使用所有参数)——您排除了吗?