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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
深入理解PHP中的global
Aug 19 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
PHP常见数组函数用法小结
Mar 21 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP yield关键字功能与用法分析
Jan 03 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
Apache设置虚拟WEB
2006/10/09 PHP
php获取地址栏信息的代码
2008/10/08 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
Python中的各种装饰器详解
2015/04/11 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
python实现高斯投影正反算方式
2020/01/17 Python
python如何调用字典的key
2020/05/25 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
财务会计毕业生个人求职信
2014/02/03 职场文书
合作经营协议书
2014/04/17 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
职位证明模板
2015/06/23 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers