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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php总结 --- 18. 七牛云存储相关的知识,希望对你有一定的参考价值。

第三方资源拉取

技术分享
 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. 七牛云存储的主要内容,如果未能解决你的问题,请参考以下文章

如何上传图片到七牛云

在 Laravel 5 中集成七牛云存储实现云存储功能

七牛云存储三周年回顾

php接入七牛云api

《走进校园》技术交流会:七牛云存储与GitCafe携手走进校园

WP集成七牛云存储(原创)