PHP整合七牛实现上传文件


Posted in PHP onJuly 03, 2015

七牛支持抓取远程图片 API,用 access_key + secret_key + url 生成 access_token, 把 access_token 加在 header 里,然后向 post url 就完成上传了。

Sample code:

<?php 
/* 
 * 
 * @desc URL安全形式的base64编码 
 * @param string $str 
 * @return string 
 */ 
 
 
function urlsafe_base64_encode($str){ 
  $find = array("+","/"); 
  $replace = array("-", "_"); 
  return str_replace($find, $replace, base64_encode($str)); 
} 
 
/** 
 * generate_access_token 
 * 
 * @desc 签名运算 
 * @param string $access_key 
 * @param string $secret_key 
 * @param string $url 
 * @param array $params 
 * @return string 
 */ 
function generate_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 = '''your access_key'; 
$secret_key = 'your secret_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); 
 
function send($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 'CURL ERROR: ' . curl_error($curl); 
  } else { 
    return $con; 
  } 
} 
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP生成静态页
Nov 25 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
php常用正则函数实例小结
Dec 29 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 #PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 #PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 #PHP
PHP的Socket通信之UDP通信实例
Jul 02 #PHP
php三元运算符知识汇总
Jul 02 #PHP
PHP中foreach()用法汇总
Jul 02 #PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 #PHP
You might like
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
js实现双色球效果
2020/08/02 Javascript
django接入新浪微博OAuth的方法
2015/06/29 Python
Python ftp上传文件
2016/02/13 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
python实现简易通讯录修改版
2018/03/13 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
更新修改后的Python模块方法
2019/03/03 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
铭立家具面试题
2012/12/06 面试题
阅兵口号
2014/06/19 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang