PHP SDKv6

此 SDK 适用于 PHP 5.1.0 及其以上版本。基于 七牛云存储官方API 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。

SDK源码地址:https://github.com/qiniu/php-sdk/tags

应用接入

1. 获取Access Key 和 Secret Key

要接入七牛云存储,您需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。可以通过如下步骤获得:

  1. 开通七牛开发者帐号
  2. 登录七牛开发者自助平台,查看 Access Key 和 Secret Key 。

资源管理接口

1.查看单个文件属性信息

示例代码如下:

  1. require_once("qiniu/rs.php");
  2. $bucket = "phpsdk";
  3. $key = "pic.jpg";
  4. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  5. $secretKey = '<YOUR_APP_SECRET_KEY>';
  6. Qiniu_SetKeys($accessKey, $secretKey);
  7. $client = new Qiniu_MacHttpClient(null);
  8. list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key);
  9. echo "Qiniu_RS_Stat result: \n";
  10. if ($err !== null) {
  11. var_dump($err);
  12. } else {
  13. var_dump($ret);
  14. }

2. 复制单个文件

示例代码如下:

  1. require_once("qiniu/rs.php");
  2. $bucket = "phpsdk";
  3. $key = "pic.jpg";
  4. $key1 = "file_name1";
  5. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  6. $secretKey = '<YOUR_APP_SECRET_KEY>';
  7. Qiniu_SetKeys($accessKey, $secretKey);
  8. $client = new Qiniu_MacHttpClient(null);
  9. $err = Qiniu_RS_Copy($client, $bucket, $key, $bucket, $key1);
  10. echo "====> Qiniu_RS_Copy result: \n";
  11. if ($err !== null) {
  12. var_dump($err);
  13. } else {
  14. echo "Success!";
  15. }

3. 移动单个文件

示例代码如下:

  1. require_once("qiniu/rs.php");
  2. $bucket = "phpsdk";
  3. $key = "pic.jpg";
  4. $key1 = "file_name1";
  5. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  6. $secretKey = '<YOUR_APP_SECRET_KEY>';
  7. Qiniu_SetKeys($accessKey, $secretKey);
  8. $client = new Qiniu_MacHttpClient(null);
  9. $err = Qiniu_RS_Move($client, $bucket, $key, $bucket, $key1);
  10. echo "====> Qiniu_RS_Move result: \n";
  11. if ($err !== null) {
  12. var_dump($err);
  13. } else {
  14. echo "Success!";
  15. }

4. 删除单个文件

示例代码如下:

  1. require_once("qiniu/rs.php");
  2. $bucket = "phpsdk";
  3. $key1 = "file_name1";
  4. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  5. $secretKey = '<YOUR_APP_SECRET_KEY>';
  6. Qiniu_SetKeys($accessKey, $secretKey);
  7. $client = new Qiniu_MacHttpClient(null);
  8. $err = Qiniu_RS_Delete($client, $bucket, $key1);
  9. echo "====> Qiniu_RS_Delete result: \n";
  10. if ($err !== null) {
  11. var_dump($err);
  12. } else {
  13. echo "Success!";
  14. }

上传下载接口

###1. 文件上传

为了尽可能地改善终端用户的上传体验,七牛云存储首创了客户端直传功能。一般云存储的上传流程是:

  1. 客户端(终端用户) => 业务服务器 => 云存储服务

这样多了一次上传的流程,和本地存储相比,会相对慢一些。但七牛引入了客户端直传,将整个上传过程调整为:

  1. 客户端(终端用户) => 七牛 => 业务服务器

客户端(终端用户)直接上传到七牛的服务器,通过DNS智能解析,七牛会选择到离终端用户最近的ISP服务商节点,速度会比本地存储快很多。文件上传成功以后,七牛的服务器使用回调功能,只需要将非常少的数据(比如Key)传给应用服务器,应用服务器进行保存即可。

1.1上传流程

在七牛云存储中,整个上传流程大体分为这样几步:

  1. 业务服务器颁发 uptoken(上传授权凭证)给客户端(终端用户)
  2. 客户端凭借 uptoken 上传文件到七牛
  3. 在七牛获得完整数据后,发起一个 HTTP 请求回调到业务服务器
  4. 业务服务器保存相关信息,并返回一些信息给七牛
  5. 七牛原封不动地将这些信息转发给客户端(终端用户)

需要注意的是,回调到业务服务器的过程是可选的,它取决于业务服务器颁发的 uptoken。如果没有回调,七牛会返回一些标准的信息(比如文件的 hash)给客户端。如果上传发生在业务服务器,以上流程可以自然简化为:

  1. 业务服务器生成 uptoken(不设置回调,自己回调到自己这里没有意义)
  2. 凭借 uptoken 上传文件到七牛
  3. 善后工作,比如保存相关的一些信息

服务端生成 uptoken 代码如下:

  1. require_once("qiniu/rs.php");
  2. $bucket = 'phpsdk';
  3. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  4. $secretKey = '<YOUR_APP_SECRET_KEY>';
  5. Qiniu_SetKeys($accessKey, $secretKey);
  6. $putPolicy = new Qiniu_RS_PutPolicy($bucket);
  7. $upToken = $putPolicy->Token(null);

上传文件到七牛(通常是客户端完成,但也可以发生在服务端):

上传字符串

  1. require_once("qiniu/io.php");
  2. require_once("qiniu/rs.php");
  3. $bucket = "phpsdk";
  4. $key1 = "file_name1";
  5. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  6. $secretKey = '<YOUR_APP_SECRET_KEY>';
  7. Qiniu_SetKeys($accessKey, $secretKey);
  8. $putPolicy = new Qiniu_RS_PutPolicy($bucket);
  9. $upToken = $putPolicy->Token(null);
  10. list($ret, $err) = Qiniu_Put($upToken, $key1, "Qiniu Storage!", null);
  11. echo "====> Qiniu_Put result: \n";
  12. if ($err !== null) {
  13. var_dump($err);
  14. } else {
  15. var_dump($ret);
  16. }

上传本地文件

  1. require_once("qiniu/io.php");
  2. require_once("qiniu/rs.php");
  3. $bucket = "phpsdk";
  4. $key1 = "file_name1";
  5. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  6. $secretKey = '<YOUR_APP_SECRET_KEY>';
  7. Qiniu_SetKeys($accessKey, $secretKey);
  8. $putPolicy = new Qiniu_RS_PutPolicy($bucket);
  9. $upToken = $putPolicy->Token(null);
  10. $putExtra = new Qiniu_PutExtra();
  11. $putExtra->Crc32 = 1;
  12. list($ret, $err) = Qiniu_PutFile($upToken, $key1, __file__, $putExtra);
  13. echo "====> Qiniu_PutFile result: \n";
  14. if ($err !== null) {
  15. var_dump($err);
  16. } else {
  17. var_dump($ret);
  18. }

1.2 上传策略

uptoken 实际上是用 AccessKey/SecretKey 进行数字签名的上传策略(Qiniu_RS_PutPolicy),它控制则整个上传流程的行为。让我们快速过一遍你都能够决策啥:

  1. class Qiniu_RS_PutPolicy
  2. {
  3. public $Scope; // 必选项。可以是 bucketName 或者 bucketName:key
  4. public $CallbackUrl; // 可选
  5. public $CallbackBody; // 可选
  6. public $ReturnUrl; // 可选, 更贴切的名字是 redirectUrl。
  7. public $ReturnBody; // 可选
  8. public $AsyncOps; // 可选
  9. public $EndUser; // 可选
  10. public $Expires; // 可选。默认是 3600 秒
  11. }
  • scope 限定客户端的权限。如果 scope 是 bucket,则客户端只能新增文件到指定的 bucket,不能修改文件。如果 scope 为 bucket:key,则客户端可以修改指定的文件。
  • callbackUrl 设定业务服务器的回调地址,这样业务服务器才能感知到上传行为的发生。
  • callbackBody 设定业务服务器的回调信息。文件上传成功后,七牛向业务服务器的callbackUrl发送的POST请求携带的数据。支持 魔法变量 和 自定义变量
  • returnUrl 设置用于浏览器端文件上传成功后,浏览器执行301跳转的URL,一般为 HTML Form 上传时使用。文件上传成功后浏览器会自动跳转到 returnUrl?upload_ret=returnBody
  • returnBody 可调整返回给客户端的数据包,支持 魔法变量 和 自定义变量returnBody 只在没有 callbackUrl 时有效(否则直接返回 callbackUrl 返回的结果)。不同情形下默认返回的 returnBody 并不相同。在一般情况下返回的是文件内容的 hash,也就是下载该文件时的 etag;但指定 returnUrl 时默认的 returnBody 会带上更多的信息。
  • asyncOps 可指定上传完成后,需要自动执行哪些数据处理。这是因为有些数据处理操作(比如音视频转码)比较慢,如果不进行预转可能第一次访问的时候效果不理想,预转可以很大程度改善这一点。

关于上传策略更完整的说明,请参考 uptoken

2. 文件下载

七牛云存储上的资源下载分为 公有资源下载 和 私有资源下载 。

私有(private)是 Bucket(空间)的一个属性,一个私有 Bucket 中的资源为私有资源,私有资源不可匿名下载。

新创建的空间(Bucket)缺省为私有,也可以将某个 Bucket 设为公有,公有 Bucket 中的资源为公有资源,公有资源可以匿名下载。

2.1 公有资源下载

如果在给bucket绑定了域名的话,可以通过以下地址访问。

  1. [GET] http://<domain>/<key>

示例代码:

  1. $key = 'pic.jpg';
  2. $domain = 'phpsdk.qiniudn.com';
  3. //$baseUrl 就是您要访问资源的地址
  4. $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);

其中可以到七牛云存储开发者自助网站绑定, 域名可以使用自己一级域名的或者是由七牛提供的二级域名(<bucket>.qiniudn.com)。注意,尖括号不是必需,代表替换项。

2.2 私有资源下载

私有资源必须通过临时下载授权凭证(downloadToken)下载,如下:

  1. [GET] http://<domain>/<key>?e=<deadline>&token=<downloadToken>

注意,尖括号不是必需,代表替换项。
私有下载链接可以使用 SDK 提供的如下方法生成:

  1. require_once("qiniu/rs.php");
  2. $key = 'pic.jpg';
  3. $domain = 'phpsdk.qiniudn.com';
  4. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  5. $secretKey = '<YOUR_APP_SECRET_KEY>';
  6. Qiniu_SetKeys($accessKey, $secretKey);
  7. $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
  8. $getPolicy = new Qiniu_RS_GetPolicy();
  9. $privateUrl = $getPolicy->MakeRequest($baseUrl, null);
  10. echo "====> getPolicy result: \n";
  11. echo $privateUrl . "\n";

数据处理接口

七牛支持在云端对图像, 视频, 音频等富媒体进行个性化处理

1. 图像

1.1 查看图像属性

  1. require_once("qiniu/rs.php");
  2. require_once("qiniu/fop.php");
  3. $key = 'pic.jpg';
  4. $domain = 'phpsdk.qiniudn.com';
  5. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  6. $secretKey = '<YOUR_APP_SECRET_KEY>';
  7. Qiniu_SetKeys($accessKey, $secretKey);
  8. //生成baseUrl
  9. $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
  10. //生成fopUrl
  11. $imgInfo = new Qiniu_ImageInfo;
  12. $imgInfoUrl = $imgInfo->MakeRequest($baseUrl);
  13. //对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。
  14. $getPolicy = new Qiniu_RS_GetPolicy();
  15. $imgInfoPrivateUrl = $getPolicy->MakeRequest($imgInfoUrl, null);
  16. echo "====> imageInfo privateUrl: \n";
  17. echo $imgInfoPrivateUrl . "\n";

$imgInfoPrivateUrl粘贴到浏览器地址栏中就可以查看该图像的信息了。

1.2 查看图片EXIF信息

  1. require_once("qiniu/rs.php");
  2. require_once("qiniu/fop.php");
  3. $key = 'pic.jpg';
  4. $domain = 'phpsdk.qiniudn.com';
  5. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  6. $secretKey = '<YOUR_APP_SECRET_KEY>';
  7. Qiniu_SetKeys($accessKey, $secretKey);
  8. //生成baseUrl
  9. $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
  10. //生成fopUrl
  11. $imgExif = new Qiniu_Exif;
  12. $imgExifUrl = $imgExif->MakeRequest($baseUrl);
  13. //对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。
  14. $getPolicy = new Qiniu_RS_GetPolicy();
  15. $imgExifPrivateUrl = $getPolicy->MakeRequest($imgExifUrl, null);
  16. echo "====> imageView privateUrl: \n";
  17. echo $imgExifPrivateUrl . "\n";

1.3 生成图片预览

  1. require_once("qiniu/rs.php");
  2. require_once("qiniu/fop.php");
  3. $key = 'pic.jpg';
  4. $domain = 'phpsdk.qiniudn.com';
  5. $accessKey = '<YOUR_APP_ACCESS_KEY>';
  6. $secretKey = '<YOUR_APP_SECRET_KEY>';
  7. Qiniu_SetKeys($accessKey, $secretKey);
  8. //生成baseUrl
  9. $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
  10. //生成fopUrl
  11. $imgView = new Qiniu_ImageView;
  12. $imgView->Mode = 1;
  13. $imgView->Width = 60;
  14. $imgView->Height = 120;
  15. $imgViewUrl = $imgView->MakeRequest($baseUrl);
  16. //对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。
  17. $getPolicy = new Qiniu_RS_GetPolicy();
  18. $imgViewPrivateUrl = $getPolicy->MakeRequest($imgViewUrl, null);
  19. echo "====> imageView privateUrl: \n";
  20. echo $imgViewPrivateUrl . "\n";

贡献代码

  1. Fork
  2. 创建您的特性分支 (git checkout -b my-new-feature)
  3. 提交您的改动 (git commit -am 'Added some feature')
  4. 将您的修改记录提交到远程 git 仓库 (git push origin my-new-feature)
  5. 然后到 github 网站的该 git 远程仓库的 my-new-feature 分支下发起 Pull Request

许可证

Copyright © 2013 qiniu.com

基于 MIT 协议发布:

七牛云存储提供的免费额度:

存储空间10GB

每月 PUT/DELETE 10万次请求

每月下载流量10GB

每月 GET 100万次请求

欢迎关注方倍工作室微信,了解我们及行业的最新动态

七牛云存储官方接口PHP版本的更多相关文章

  1. C#/.net七牛云存储上传图片(文件)操作

    七牛云存储官方: C#SDK(http://developer.qiniu.com/docs/v6/sdk/csharp-sdk.html) 注册成为标准用户就可获得:10GB永久免费存储空间/ 每月 ...

  2. 使用Qiniu-JavaScript-SDK上传文件至七牛云存储

    一.Qiniu-JavaScript-SDK介绍 基于 JS-SDK 可以方便的从浏览器端上传文件至七牛云存储,并对上传成功后的图片进行丰富的数据处理操作. JS-SDK 兼容支持 H5 File A ...

  3. 七牛云存储Python SDK使用教程 - 上传策略详解

    文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k  ...

  4. 【UEditor】远程上传图片到【七牛云存储】

    杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...

  5. wordpress使用video.js与七牛云存储实现无广告视频分享应用

    video.js是一款极受欢迎的基于HTML5的开源WEB视频播放器,其充分利用了HTML5的视频支持特性,可以实现全平台的无视频插件播放功能,对于现在流行的手机.PAD等移动智能终端有极佳的应用体验 ...

  6. C#实现七牛云存储

    云存储,就是把本地的资源文件存放至网络上,可以公网访问.相当于网盘功能,感觉非常方便. 这里介绍的是七牛云存储.有兴趣的可以去官方网站详看 根据官网的介绍,本身是提供SDK的,下载地址,大家可以根据自 ...

  7. Ueditor结合七牛云存储上传图片、附件和图片在线管理的实现和最新更新

    最新下载地址: https://github.com/widuu/qiniu_ueditor_1.4.3 Ueditor七牛云存储版本 注意事项 老版本请查看 : https://github.com ...

  8. 七牛云存储 qiniu 域名 回收 文件上传 备份 下载 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. WP集成七牛云存储(原创)

    借助:七牛镜像存储 WordPress 插件 https://wordpress.org/plugins/wpjam-qiniu/ 安装本插件1.4.5及以上版本,请先安装并激活WPJAM BASIC ...

随机推荐

  1. sql语句面试总结

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name   kecheng   fenshu 张三     语文       81张三     数学       75李四     语文   ...

  2. LR_问题_在导入wsdl时出现parsing error

    问题描述:使用LR录制webservice协议的脚本,在导入wsdl时出现parsing error,详见图 问题解决:在导入wsdl时输入的地址错误,只指定了地址的虚拟目录名称,未指定方法名称,应该 ...

  3. 创业草堂之十:换位思考:假如你是VC

    前一回“创业草堂”的讲义是一份VC的Termsheet,这里面浓缩着VC投资关键性的理念. 今天来对Termsheet做些实质性的讲解.最有效的学习方法是创业者你亲自来扮演一回VC的角色,学习如何从V ...

  4. 龙芯将两款 CPU 核开源,这意味着什么?

    10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办“面向计算机系统能力培养的龙芯CPU高校开源计划”活动,在活动中,龙芯中科宣布将GS132和G ...

  5. 对于delphi for linux心存梦想的同学,彻底醒醒吧

    Borland 曾经多次做市场调查,很多人呼吁推出delphi for linux.可是直到kylix发展到第三版,borland才明白:一个内置C编译器环境并与之关系紧密的免费OS,没有人愿意花钱去 ...

  6. 为什么国外程序员爱用Mac?

    Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒.那么为什么专业人士也对 Mac 情有独钟呢?从个人使用 ...

  7. AXURE制作APP抽屉式菜单

    1.拖一个dynamic panel到窗体,将State1改名为State_首页: 2.拖2个dynamic panel到State_首页中,分别命名为侧边菜单及首页内容,首页内容盖住侧边菜单: 3. ...

  8. CSS+DIV问题!DIV的最小高度问题!

    DIV层的最小高度问题!就是一个DIV有个最小高度,但是如果DIV层中的内容很多,DIV的高度会根据内容而进行拉长!要求IE6.IE7还有firefox都要兼容!我试了很多网上的方法都不好用!请测试后 ...

  9. 新浪实时股票数据接口http://hq.sinajs.cn/list=code

    股票数据的获取目前有如下两种方法可以获取:1. http/javascript接口取数据2. web-service接口 1.http/javascript接口取数据1.1Sina股票数据接口以大秦铁 ...

  10. Hadoop集群(第7期)_Eclipse开发环境设置

    1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...