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&amp;mysql(四)
Oct 09 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
ThinkPHP表单令牌错误的相关解决方法分析
May 20 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
PHP中str_split()函数的用法讲解
Apr 11 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 PHP
php7 list()、session及其他模块的修改实例分析
May 25 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 PHP
windows系统php环境安装swoole具体步骤
Mar 04 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
基于mysql的论坛(4)
2006/10/09 PHP
用PHP读取RSS feed的代码
2008/08/01 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
python实现简单的文字识别
2018/11/27 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
数控技术与应用毕业生自荐信
2013/09/24 职场文书
股东协议书范本
2014/04/14 职场文书
学生操行评语大全
2014/04/24 职场文书
学校四群教育实施方案
2014/06/12 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
高三英语复习计划
2015/01/19 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
使用MybatisPlus打印sql语句
2022/04/22 SQL Server