PHP整合七牛实现上传文件

七牛支持抓取远程图片 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;
  }
}
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • 基于php实现七牛抓取远程图片

    由于公司网站之前的用户头像都是存储在自己的服务器上的,后来感觉管理不方便,新增加的用户头像都上传到了七牛,为了方便统一管理,领导说把本地服务器的头像全部迁移到了七牛. 1.梳理下思路 先判断用户的头像是否在七牛,若不存在,本地如果有则抓取到七牛,然后进行批量抓取 2.七牛判断图片是否存在 /** * 查看七牛url是否存在 * @param string $url */ function url_exists($url) { require_once(COMMON_PATH."qiniu/rs.

  • ThinkPHP开发--使用七牛云储存

    ThinkPHP开发--使用七牛云储存 七牛云储存是thinkphp储存类型可选项之一,怎么使用呢,好了不卖关子了,下面就详细介绍使用方法 首先是注册一个七牛账户 ThinkPHP开发--使用七牛云储存 然后登陆 ThinkPHP开发--使用七牛云储存 然后选择添加资源,选择对象存储 ThinkPHP开发--使用七牛云储存 ThinkPHP开发--使用七牛云储存 然后填写空间名称(即bucket,后面会用到这个名称),访问控制为公开(选择公开访问是为了操作方便,当然你也可以选择私有,不过请求资源

  • PHP整合七牛实现上传文件

    七牛支持抓取远程图片 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 = ar

  • NodeJS使用七牛云存储上传文件的方法

    1-准备工作 确认安装node和npm 安装 qiniu,formidable,express模块 npm install --save qiniu formidable [x] 导入模块 let qiniu = require('qiniu'), formidable = require('formidable'), express = require('express'), router = express.Router(); 2-服务器端的云存储操作 2-1文件上传 router.post

  • Vue2.0利用vue-resource上传文件到七牛的实例代码

    本文介绍了Vue2.0利用vue-resource上传文件到七牛,分享给大家,希望对大家有帮助 关于上传,总是有很多可以说道的. 16年底,公司项目番茄表单的前端部分,开始了从传统的jquery到vue 2.0的彻底重构.但是上传部分,无论是之前的传统版本,还是Vue新版本,都是在使用着FileAPI这款优秀的开源库,只是进行了简单的directive化.为什么呢?因为兼容性.没办法,公司项目不等同于个人项目,必须要考虑大多数浏览器.否则,上传部分完全可以利用Vue-Resource以及Form

  • Node.js上传文件功能之服务端如何获取文件上传进度

    内容概述 multer是常用的Express文件上传中间件.服务端如何获取文件上传的进度,是使用的过程中,很常见的一个问题.在SF上也有同学问了类似问题<nodejs multer有没有查看文件上传进度的方法?>.稍微回答了下,这里顺便整理出来,有同样疑问的同学可以参考. 下文主要介绍如何利用progress-stream获取文件上传进度,以及该组件使用过程中的注意事项. 利用progress-stream获取文件上传进度 如果只是想在服务端获取上传进度,可以试下如下代码.注意,这个模块跟Ex

  • PHP上传文件及图片到七牛的方法

    上传文件到七牛最简单的方式就是使用七牛官方最新的SDK 安装PHP SDK composer require qiniu/php-sdk 上传文件到七牛 use Qiniu\Auth; use Qiniu\Storage\UploadManager; $cfg = [ 'access' => 'YOUR_ACCESS_KEY', 'secret' => 'YOUR_SECRET_KEY', 'bucket' => 'YOUR_BUCKET', 'domain' => 'https:

  • Django Admin 上传文件到七牛云的示例代码

    中文圈关于Django Admin 上传文件到七牛云的资料和函数库已经是2年前的了,国外的则都是关于AWS S3.Azure Storage一些国外的服务的.我根据Django的文档里提到的存储系统来实现上传文件到七牛云的简单功能. 在Django Admin的表单是根据数据模型生成的,其中文件上传由FileField和继承FileField的ImageField来决定的,文件上传到静态文件目录,数据库保存相对路径.实现上传文件到七牛云我们是根据FileField的storage参数来实现的.

  • SpringBoot整合Minio实现上传文件的完整步骤记录

    目录 Minio 安装 Minio 使用docker安装 拉取镜像 启动 使用9000端口 登录控制台 创建存储桶 设置桶权限 创建 Java 客户端 依赖 配置文件 配置文件配置类 创建 minio 客户端 文件地址返回路径实体类 上传文件工具类 测试上传文件 Controller 测试上传 控制台也可以看到上传的视频 总结 Minio 上传文件如果不使用云服务的话,需要本地搭建,一般选择 FastDFS 但是 FastDFS 安装比较复杂,今天了解一款安装使用更简单的存储系统 MinIO M

  • AjaxFileUpload.js实现异步上传文件功能

    做软工作业时,需要实现无刷新异步上传图片到服务器,于是想利用Ajax: 得到file的val,再post过去- 等真正实现的时候才发现,根本行不通. 于是翻来翻去找到一个封装好的js插件,可以实现异步上传文件. AjaxFileUpload 这个插件的原理是创建隐藏的表单和iframe,然后用JS去提交,获得返回值. 语法 $.ajaxFileUpload([options]) 参数说明 url 上传处理程序地址. fileElementId 需要上传的文件域的ID,即的ID. secureur

  • Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例

    效果DEMO:http://www.never-online.net/tutorial/js/upload/Javascript & DHTML 实例编程(教程)(三),初级实例篇-上传文件控件实例上章基本上把要交代的基本知识都说了一些,今天终于开始写代码了:D首先来做一个实例,批量上传的UI控件.以后一般做的示例也是以UI控件为主的.都是封装成Object或者用Function封装成"Class"类. 也许对于单单看前几章的朋友来说这个例子过于深奥了,但是不用担心,一步步来解

  • HipChat上传文件报未知错误的原因分析及解决方案

    HipChat的功能类似于Campfire.Sazneo等在线协同工具,并且和Yammer以及Salesforce的Chatter等企业社交平台有一定相似之处.你可以为单个项目或者小组搭建自有的聊天室,也可以很方便的发起一对一聊天.这套 IM 系统还整合了团队文件管理和分享,拖拽就能完成保存操作. 前言 HipChat是Atlassian公司的一款团队协作即时通讯工具,服务端为Linux(官方给的服务端就是一个虚拟机),在Windows.Linux.Android.IOS.Mac等平台都有客户端

随机推荐