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和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
PHP levenshtein()函数用法讲解
Mar 08 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 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
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php eval函数一句话木马代码
2015/05/21 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
js实现无缝滚动图
2017/02/22 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
js实现tab栏切换效果
2020/08/02 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
python实现中文输出的两种方法
2015/05/09 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
促销活动总结
2014/04/28 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书