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; } } ?>
以上所述就是本文的全部内容了,希望大家能够喜欢。