第三方资源拉取

 /**
  * 七牛云抓取文件
  * @param string $url 文件URL地址
  *
  * 参考地址:http://developer.qiniu.com/code/v6/api/kodo-api/rs/fetch.html
  */
 function qiniuFetch($url){
     $encodedURL = str_replace(array('+', '/'), array('-', '_'), base64_encode($url));
     $encodedEntryURI = str_replace(array('+', '/'), array('-', '_'), base64_encode(C('QINIU_BUCKET')));
     $url = '/fetch/' . $encodedURL . '/to/' . $encodedEntryURI;

     $sign = hash_hmac('sha1', $url . "\n", C('QINIU_SK'), true);
     $token = C('QINIU_AK') . ':' . str_replace(array('+', '/'), array('-', '_'), base64_encode($sign));

     $header = array('Host: iovip.qbox.me', 'Content-Type:application/x-www-form-urlencoded', 'Authorization: QBox ' . $token);

     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, trim('http://iovip.qbox.me' . $url, '\n'));
     curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curl, CURLOPT_POSTFIELDS, "");
     $result = json_decode(curl_exec($curl), true);
     curl_close($curl);

     return $result['key'] ? C('QINIU_HOST') . $result['key'] : false;
 }

上传图片(服务端)

 /**
      * 文件上传获取Token
      */
     public function getToken(){
         $type = I('get.type', 0, 'intval');
         header("Content-type:text/html;charset=utf-8");
         $data =  array("scope" => C('QINIU_BUCKET'), "deadline" => time() + 3600);
         $data1 = array_merge($data, array('returnUrl' => 'http://icms.weilt.net'.U('Home/Upload/uploadReturn'), 'returnBody' => '{"url":"'.C('QINIU_HOST').'$(key)", "size":$(fsize), "name":"$(fname)"}'));
         $token1 = $this->token($data1, C('QINIU_AK'), C('QINIU_SK'));
         $data2 = array_merge($data, array('callbackUrl' => 'http://icms.weilt.net'.U('Home/Upload/uploadCallback'), 'callbackBody' => 'url='.C('QINIU_HOST').'$(key)&size=$(fsize)&name=$(fname)'));
         $token2 = $this->token($data2, C('QINIU_AK'), C('QINIU_SK'));
         if($type == 3){
             $this->ajaxReturn(array('token1' => $token1, 'token2' => $token2));
         }else if($type == 2){
             $this->ajaxReturn($token2);
         }else{
             $this->ajaxReturn($token1);
         }
     }
     /**
      * 单文件上传返回信息
      */
     public function uploadReturn(){
         $str = json_decode(base64_decode(str_replace(array('-', '_'), array('+', '/'), $_GET['upload_ret'])), true);
         exit('{"error":0, "url": "'.$str['url'].'"}');
     }
     /**
      * 上传成功回调函数
      */
     public function uploadCallback(){
         exit('{"error":0, "url": "'.$_POST['url'].'"}');
     }

客户端

 <form method="post" action="http://upload.qiniu.com/" enctype="multipart/form-data">
     <input name="token" type="hidden" value="...">
     <input name="file" type="file" />
 </form>

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

http

 /**
      * 发送HTTP请求方法,目前只支持CURL发送请求
      * @param string $url 请求URL
      * @param array $param GET参数数组
      * @param array $data POST的数据,GET请求时该参数无效
      * @param string $method 请求方法GET/POST
      * @param string $cert 证书文件
      * @return array 响应数据
      */
     protected static function http($url, $param, $data = '', $method = 'GET', $cert = null){
         $opts = array(CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false);

         $opts[CURLOPT_URL] = $url . '?' . http_build_query($param);
         if(strtoupper($method) == 'POST'){
             $opts[CURLOPT_POST] = 1;
             $opts[CURLOPT_POSTFIELDS] = $data;
             if(is_string($data)){
                 $opts[CURLOPT_HTTPHEADER] = array('Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen($data));
             }
         }

         if($cert){
             $opts[CURLOPT_SSLCERT] = 'PEM';
             $opts[CURLOPT_SSLCERT] = "/home/niu/work/www/weilt_new/cert/apiclient_cert.pem";
             $opts[CURLOPT_SSLKEYTYPE] = 'PEM';
             $opts[CURLOPT_SSLKEY] = "/home/niu/work/www/weilt_new/cert/apiclient_key.pem";
         }

         $ch = curl_init();
         curl_setopt_array($ch, $opts);
         $data = curl_exec($ch);
         $error = curl_error($ch);
         curl_close($ch);
         return $data;
     }

php总结 --- 18. 七牛云存储的更多相关文章

  1. laravel上传文件到七牛云存储

    背景 最近在用PHP和laravel框架做一个图片网站,需要将图片存贮到云端,搜索下了对比了下功能,发现七牛云存储不错(主要小流量免费),便选择使用七牛作为图片存储空间. 要实现的功能很简单,选择本地 ...

  2. Go语言实战 - 网站性能优化第一弹“七牛云存储”

    由于用户纷纷反应山坡网的打开速度比较慢,所以两天前我们决定把服务器从linode迁移到阿里云. 整个迁移过程非常平滑,基本上一个小时就完成了.而且阿里云的配套设施提供的也很不错,运行状态监控什么的都有 ...

  3. JavaWeb结合七牛云存储搭建个人相册服务

    JavaWeb结合七牛云存储搭建个人相册服务 一.引言1. 课程概述 相信很多人都知道网站一般会有很多图片,对于小型网站来说,图片放在网站服务器上不算什么,但当图片数量很大时,会造成服务器很臃肿,相应 ...

  4. 《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)

    两个月前的发布的博客<介绍一款开源的类Excel电子表格软件>引起了热议:在博客园有近2000个View.超过20个评论. 同时有热心读者电话咨询如何能够在SpreadDesing中实现存 ...

  5. 为七牛云存储开发的PHP PEAR 包:Services_Qiniu

    七牛云存储Qiniu Resource (Cloud) Storage:用于存储图片.apk等静态资源. 优点: 1.使用七牛带宽和CDN,速度快,不占用开发者服务器. 2.支持图片任意格式.任意分辨 ...

  6. 如何在WordPress中使用七牛云存储

    序:七牛云存储可以方便的将网站的图片等数据镜像到七牛云存储的空间,直接从云端将数据返回给用户.这样可以大大节省网站的空间,提升网站的访问速度. 真正显示一键实现WordPress博客静态文件CDN加速 ...

  7. CodeIgniter - 集成七牛云存储

    最近有一个项目需要集成七牛云存储的图片存储和调用功能,程序是基于CodeIgniter2.1.3的PHP框架.刚拿到手完全无从下手的感觉,因为像框架这种东西,想从官方的PHPSDK集成进去,需要改动很 ...

  8. PHP使用七牛云存储之图片的上传、下载、303重定向教程,CI框架实例

    网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了.研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向. http://blog.csdn.net/cqcre/arti ...

  9. ueditor上传图片到七牛云存储(form api,java)

    转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 ...

随机推荐

  1. Windows Phone 八、文件读写IO

    文件存储的类型 •本地应用文件: •ApplicationData.Current.LocalFolder: •漫游应用文件: •ApplicationData.Current.RoamingFold ...

  2. Datatypes translation between Oracle and SQL Server

    Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes tran ...

  3. MXNet学习~第一个例子~跑MNIST

    反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...

  4. 从oracle数据库中导出excel问题导致乱码的问题

    使用plsqldev工具将oracle的查询结果导出为excel,结果可以成功导出,但是使用libreoffice进行查看时,有好多记录都是空的. 使用python进行导出(openpyxl模块进行e ...

  5. Your intuition 你的直觉

    If you’re thinking just like everyone else, you aren’t really thinking. Follow your intuition. Do wh ...

  6. ECshop后台角色权限的添加和分配

    1.在权限文件中配置 2.在需要加权限的文件中加入权限. 例如:d:\ecshop\admin\user_account.php 3.在数据库表 ecs_admin_action中配置 4.会员权限 ...

  7. PHP开发环境配置~Windows 7 IIS

    1.配置IIS添加角色服务:CGI.ISAPI扩展.ISAPI筛选器 2.下载PHP安装包 http://windows.php.net/download/ 3.添加模块映射 4.配置php.ini ...

  8. grid style

    <style type="text/css"> .g_grid tr{ border-left:none; border-right:none; border-top: ...

  9. git 常用命令及解析 由浅入深

    笔者用的是windows系统,不过并没有什么影响. Git  分布式版本控制系统. 为了让初学git的人明白git是干什么的,有什么意义 笔者觉得先来介绍git作为版本控制器是怎么运作的会让大家对后边 ...

  10. win7下matlab2016a配置vlfeat

    1.下载vlfeat http://www.vlfeat.org/ 2.解压到了matlab安装目录的toolbox下 3.打开vs2013的这个 4.输入nmake version  查看我的版本是 ...