七牛云的图片加速一直在用,好用没得说,最近想采集一些图片,然后上传,别人调用的功能,所以就下载到了七牛,也就用到了七牛的fetch功能,这步搞定之后,七牛的文档好乱,好多相关的东西不在一起写,要分别找,而且描述的不清楚,另外吐槽下,给的PHP SDK也有点问题,返回bad token。。。。但是七牛云的服务还是很好的,嘿嘿
话不多说,下面上代码,两个函数,大家参考
注册链接: https://portal.qiniu.com/signup?code=3lp4xsc4igf2q
下载域名中.根据自己所在区进行切换
iovip.qbox.me 华东
iovip-z1.qbox.me 华北
iovip-z2.qbox.me 华南
iovip-na0.qbox.me 北美
$config = array(
'secrectKey' => 'sk', //七牛服务器
'accessKey' => 'ak', //七牛用户
'domain' => 'cdn域名', //七牛域名
'bucket' => 'bucket', //空间名称
);
$url = 'http://devtools.qiniu.com/qiniu.png';
$key = time() . '.png';
$url=qiniuFetch($url,$key,$config);
/**
* @param $url 网络图片
* @param $key 保存的路径
* @param $config 配置参数
*/
function qiniuFetch($baseurl,$key='',$config){
$iovip='iovip-z1.qbox.me';
$encodedURL = base64_urlSafeEncode($baseurl);
$bucket =empty($key)?$config['bucket']: $config['bucket'].':'.$key;
$encodedEntryURI = base64_urlSafeEncode($bucket);
$url = '/fetch/' . $encodedURL . '/to/' . $encodedEntryURI;
$sign = hash_hmac('sha1', $url . "\n", $config['secrectKey'], true);
$token = $config['accessKey'] . ':' . base64_urlSafeEncode($sign);
$header = array('Host: '.$iovip, 'Content-Type:application/x-www-form-urlencoded', 'Authorization: QBox ' . $token);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://'.$iovip . $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, "");
$result = json_decode(curl_exec($curl), true);
curl_close($curl);
return !empty($result['key']) ? $config['domain'] . $result['key'] : false;
}
function base64_urlSafeEncode($data){
$find = array('+', '/');
$replace = array('-', '_');
return str_replace($find, $replace, base64_encode($data));
}