码迷,mamicode.com
首页 > Web开发 > 详细

php总结 --- 18. 七牛云存储

时间:2016-12-01 02:02:50      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:dev   load   cti   ash   class   trim   form   code   上传图片   

第三方资源拉取

技术分享
 1 /**
 2  * 七牛云抓取文件
 3  * @param string $url 文件URL地址
 4  *
 5  * 参考地址:http://developer.qiniu.com/code/v6/api/kodo-api/rs/fetch.html
 6  */
 7 function qiniuFetch($url){
 8     $encodedURL = str_replace(array(‘+‘, ‘/‘), array(‘-‘, ‘_‘), base64_encode($url));
 9     $encodedEntryURI = str_replace(array(‘+‘, ‘/‘), array(‘-‘, ‘_‘), base64_encode(C(‘QINIU_BUCKET‘)));
10     $url = ‘/fetch/‘ . $encodedURL . ‘/to/‘ . $encodedEntryURI;
11     
12     $sign = hash_hmac(‘sha1‘, $url . "\n", C(‘QINIU_SK‘), true);
13     $token = C(‘QINIU_AK‘) . ‘:‘ . str_replace(array(‘+‘, ‘/‘), array(‘-‘, ‘_‘), base64_encode($sign));
14     
15     $header = array(‘Host: iovip.qbox.me‘, ‘Content-Type:application/x-www-form-urlencoded‘, ‘Authorization: QBox ‘ . $token);
16 
17     $curl = curl_init();
18     curl_setopt($curl, CURLOPT_URL, trim(‘http://iovip.qbox.me‘ . $url, ‘\n‘));
19     curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
20     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
21     curl_setopt($curl, CURLOPT_POSTFIELDS, "");
22     $result = json_decode(curl_exec($curl), true);
23     curl_close($curl);
24 
25     return $result[‘key‘] ? C(‘QINIU_HOST‘) . $result[‘key‘] : false;
26 }
View Code

 

 

上传图片(服务端)

技术分享
 1 /**
 2      * 文件上传获取Token
 3      */
 4     public function getToken(){
 5         $type = I(‘get.type‘, 0, ‘intval‘);
 6         header("Content-type:text/html;charset=utf-8");
 7         $data =  array("scope" => C(‘QINIU_BUCKET‘), "deadline" => time() + 3600);
 8         $data1 = array_merge($data, array(‘returnUrl‘ => ‘http://icms.weilt.net‘.U(‘Home/Upload/uploadReturn‘), ‘returnBody‘ => ‘{"url":"‘.C(‘QINIU_HOST‘).‘$(key)", "size":$(fsize), "name":"$(fname)"}‘));
 9         $token1 = $this->token($data1, C(‘QINIU_AK‘), C(‘QINIU_SK‘));
10         $data2 = array_merge($data, array(‘callbackUrl‘ => ‘http://icms.weilt.net‘.U(‘Home/Upload/uploadCallback‘), ‘callbackBody‘ => ‘url=‘.C(‘QINIU_HOST‘).‘$(key)&size=$(fsize)&name=$(fname)‘));
11         $token2 = $this->token($data2, C(‘QINIU_AK‘), C(‘QINIU_SK‘));
12         if($type == 3){
13             $this->ajaxReturn(array(‘token1‘ => $token1, ‘token2‘ => $token2));
14         }else if($type == 2){
15             $this->ajaxReturn($token2);
16         }else{
17             $this->ajaxReturn($token1);
18         }
19     }
20     /**
21      * 单文件上传返回信息
22      */
23     public function uploadReturn(){
24         $str = json_decode(base64_decode(str_replace(array(‘-‘, ‘_‘), array(‘+‘, ‘/‘), $_GET[‘upload_ret‘])), true);
25         exit(‘{"error":0, "url": "‘.$str[‘url‘].‘"}‘);
26     }
27     /**
28      * 上传成功回调函数
29      */
30     public function uploadCallback(){
31         exit(‘{"error":0, "url": "‘.$_POST[‘url‘].‘"}‘);
32     }
View Code

客户端

技术分享
1 <form method="post" action="http://upload.qiniu.com/" enctype="multipart/form-data">
2     <input name="token" type="hidden" value="...">
3     <input name="file" type="file" />
4 </form>
View Code

可以使用回调方式,或者直接返回的方式

php总结 --- 18. 七牛云存储

标签:dev   load   cti   ash   class   trim   form   code   上传图片   

原文地址:http://www.cnblogs.com/hangtt/p/6120037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!