PHP整合七牛实现上传文件
七牛支持抓取远程图片API,用access_key+secret_key+url生成access_token,把access_token加在header里,然后向posturl就完成上传了。
Samplecode:
<?php
/*
*
*@descURL安全形式的base64编码
*@paramstring$str
*@returnstring
*/
functionurlsafe_base64_encode($str){
$find=array("+","/");
$replace=array("-","_");
returnstr_replace($find,$replace,base64_encode($str));
}
/**
*generate_access_token
*
*@desc签名运算
*@paramstring$access_key
*@paramstring$secret_key
*@paramstring$url
*@paramarray$params
*@returnstring
*/
functiongenerate_access_token($access_key,$secret_key,$url,$params=''){
$parsed_url=parse_url($url);
$path=$parsed_url['path'];
$access=$path;
if(isset($parsed_url['query'])){
$access.="?".$parsed_url['query'];
}
$access.="\n";
if($params){
if(is_array($params)){
$params=http_build_query($params);
}
$access.=$params;
}
$digest=hash_hmac('sha1',$access,$secret_key,true);
return$access_key.':'.urlsafe_base64_encode($digest);
}
/**
*测试
*/
$access_key='''youraccess_key';
$secret_key='yoursecret_key';
$fetch=urlsafe_base64_encode('http://203.208.46.200/images/srpr/logo11w.png');
$to=urlsafe_base64_encode('ibeircn:11.jpg');
$url='http://iovip.qbox.me/fetch/'.$fetch.'/to/'.$to;
$access_token=generate_access_token($access_key,$secret_key,$url);
$header[]='Content-Type:application/json';
$header[]='Authorization:QBox'.$access_token;
$con=send('iovip.qbox.me/fetch/'.$fetch.'/to/'.$to,$header);
var_dump($con);
functionsend($url,$header=''){
$curl=curl_init($url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_HEADER,1);
curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
curl_setopt($curl,CURLOPT_POST,1);
$con=curl_exec($curl);
if($con===false){
echo'CURLERROR:'.curl_error($curl);
}else{
return$con;
}
}
?>
以上所述就是本文的全部内容了,希望大家能够喜欢。