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 相关文章推荐
PHP4中session登录页面的应用
Jul 25 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
学习PHP的数组总结【经验】
May 05 PHP
PHP加密解密类实例代码
Jul 20 PHP
php中各种定义变量的方法小结
Oct 18 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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
写一个用户在线显示的程序
2006/10/09 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
PHP图片上传代码
2013/11/04 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
详谈python http长连接客户端
2017/06/12 Python
Python工程师面试必备25条知识点
2018/01/17 Python
对Python 内建函数和保留字详解
2018/10/15 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
运动员口号
2014/06/09 职场文书
倡议书格式
2014/08/30 职场文书
高中生学习计划书
2014/09/15 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers
mysql幻读详解实例以及解决办法
2022/06/16 MySQL