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 判断常量,变量和函数是否存在
Apr 26 PHP
PHP遍历数组的几种方法
Mar 22 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
php创建多级目录的方法
Mar 24 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
PHP实现用户登录的案例代码
May 10 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
js 操作select相关方法函数
2009/12/06 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
vue监听dom大小改变案例
2020/07/29 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python多线程获取返回值代码实例
2020/02/17 Python
python实现猜数游戏
2020/03/27 Python
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
高级文秘工作总结的自我评价
2013/09/28 职场文书
制定岗位职责的原则
2013/11/08 职场文书
公司活动方案范文
2014/03/06 职场文书
大学社团活动总结
2014/04/26 职场文书
教师业务培训方案
2014/05/01 职场文书
超市商业计划书
2014/05/04 职场文书
会计学自荐信
2014/06/03 职场文书
开会通知短信大全
2015/04/20 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
导游词之广西漓江
2019/11/02 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
python创建字典及相关管理操作
2022/04/13 Python
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技