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 19 PHP
PHP与SQL注入攻击[二]
Apr 17 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
PHP addAttribute()函数讲解
Feb 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
php eval函数用法总结
2012/10/31 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
PHP 微信支付类 demo
2015/11/30 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
大学生毕业鉴定
2014/01/31 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
电工实训报告总结
2014/11/05 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
使用Apache Camel表达REST服务的方法
2022/06/10 Servers