php sdkv6此 sdk 适用于 php 5.1.0 及其以上版本。基于 七牛云存储官方api 构建。使用此 sdk 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 sdk,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
sdk源码地址:https://github.com/qiniu/php-sdk/tags
应用接入获取access key 和 secret key资源管理接口1 查看单个文件属性信息2 复制单个文件3 移动单个文件4 删除单个文件上传下载接口1 文件上传1.1 上传流程1.2 上传策略2 文件下载2.1 公有资源下载2.2 私有资源下载数据处理接口1 图像1.1 查看图像属性1.2 查看图片exif信息1.3 生成图片预览贡献代码许可证
应用接入
1. 获取access key 和 secret key要接入七牛云存储,您需要拥有一对有效的 access key 和 secret key 用来进行签名认证。可以通过如下步骤获得:
资源管理接口
1.查看单个文件属性信息示例代码如下:
require_once(qiniu/rs.php);$bucket = phpsdk;$key = pic.jpg;$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey);$client = new qiniu_machttpclient(null);list($ret, $err) = qiniu_rs_stat($client, $bucket, $key);echo qiniu_rs_stat result: \n;if ($err !== null) { var_dump($err);} else { var_dump($ret);}
2. 复制单个文件示例代码如下:
require_once(qiniu/rs.php);$bucket = phpsdk;$key = pic.jpg;$key1 = file_name1;$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey);$client = new qiniu_machttpclient(null);$err = qiniu_rs_copy($client, $bucket, $key, $bucket, $key1);echo ====> qiniu_rs_copy result: \n;if ($err !== null) { var_dump($err);} else { echo success!;}
3. 移动单个文件示例代码如下:
require_once(qiniu/rs.php);$bucket = phpsdk;$key = pic.jpg;$key1 = file_name1;$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey);$client = new qiniu_machttpclient(null);$err = qiniu_rs_move($client, $bucket, $key, $bucket, $key1);echo ====> qiniu_rs_move result: \n;if ($err !== null) { var_dump($err);} else { echo success!;}
4. 删除单个文件示例代码如下:
require_once(qiniu/rs.php);$bucket = phpsdk;$key1 = file_name1;$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey);$client = new qiniu_machttpclient(null);$err = qiniu_rs_delete($client, $bucket, $key1);echo ====> qiniu_rs_delete result: \n;if ($err !== null) { var_dump($err);} else { echo success!;}
上传下载接口###1. 文件上传
为了尽可能地改善终端用户的上传体验,七牛云存储首创了客户端直传功能。一般云存储的上传流程是:
客户端(终端用户) => 业务服务器 => 云存储服务
这样多了一次上传的流程,和本地存储相比,会相对慢一些。但七牛引入了客户端直传,将整个上传过程调整为:
客户端(终端用户) => 七牛 => 业务服务器
客户端(终端用户)直接上传到七牛的服务器,通过dns智能解析,七牛会选择到离终端用户最近的isp服务商节点,速度会比本地存储快很多。文件上传成功以后,七牛的服务器使用回调功能,只需要将非常少的数据(比如key)传给应用服务器,应用服务器进行保存即可。
1.1上传流程在七牛云存储中,整个上传流程大体分为这样几步:
需要注意的是,回调到业务服务器的过程是可选的,它取决于业务服务器颁发的 uptoken。如果没有回调,七牛会返回一些标准的信息(比如文件的 hash)给客户端。如果上传发生在业务服务器,以上流程可以自然简化为:
服务端生成 uptoken 代码如下:
require_once(qiniu/rs.php);$bucket = 'phpsdk';$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey);$putpolicy = new qiniu_rs_putpolicy($bucket);$uptoken = $putpolicy->token(null);
上传文件到七牛(通常是客户端完成,但也可以发生在服务端):
上传字符串
require_once(qiniu/io.php);require_once(qiniu/rs.php);$bucket = phpsdk;$key1 = file_name1;$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey);$putpolicy = new qiniu_rs_putpolicy($bucket);$uptoken = $putpolicy->token(null);list($ret, $err) = qiniu_put($uptoken, $key1, qiniu storage!, null);echo ====> qiniu_put result: \n;if ($err !== null) { var_dump($err);} else { var_dump($ret);}
上传本地文件
require_once(qiniu/io.php);require_once(qiniu/rs.php);$bucket = phpsdk;$key1 = file_name1;$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey);$putpolicy = new qiniu_rs_putpolicy($bucket);$uptoken = $putpolicy->token(null);$putextra = new qiniu_putextra();$putextra->crc32 = 1;list($ret, $err) = qiniu_putfile($uptoken, $key1, __file__, $putextra);echo ====> qiniu_putfile result: \n;if ($err !== null) { var_dump($err);} else { var_dump($ret);}
1.2 上传策略uptoken 实际上是用 accesskey/secretkey 进行数字签名的上传策略(qiniu_rs_putpolicy),它控制则整个上传流程的行为。让我们快速过一遍你都能够决策啥:
class qiniu_rs_putpolicy{ public $scope; // 必选项。可以是 bucketname 或者 bucketname:key public $callbackurl; // 可选 public $callbackbody; // 可选 public $returnurl; // 可选, 更贴切的名字是 redirecturl。 public $returnbody; // 可选 public $asyncops; // 可选 public $enduser; // 可选 public $expires; // 可选。默认是 3600 秒}
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绑定了域名的话,可以通过以下地址访问。
[get] http:///
示例代码:
$key = 'pic.jpg';$domain = 'phpsdk.qiniudn.com';//$baseurl 就是您要访问资源的地址$baseurl = qiniu_rs_makebaseurl($domain, $key);
其中可以到七牛云存储开发者自助网站绑定, 域名可以使用自己一级域名的或者是由七牛提供的二级域名(.qiniudn.com)。注意,尖括号不是必需,代表替换项。
2.2 私有资源下载私有资源必须通过临时下载授权凭证(downloadtoken)下载,如下:
[get] http:///?e=&token=
注意,尖括号不是必需,代表替换项。
私有下载链接可以使用 sdk 提供的如下方法生成:
require_once(qiniu/rs.php);$key = 'pic.jpg';$domain = 'phpsdk.qiniudn.com';$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey); $baseurl = qiniu_rs_makebaseurl($domain, $key);$getpolicy = new qiniu_rs_getpolicy();$privateurl = $getpolicy->makerequest($baseurl, null);echo ====> getpolicy result: \n;echo $privateurl . \n;
数据处理接口七牛支持在云端对图像, 视频, 音频等富媒体进行个性化处理
1. 图像
1.1 查看图像属性require_once(qiniu/rs.php);require_once(qiniu/fop.php);$key = 'pic.jpg';$domain = 'phpsdk.qiniudn.com';$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey); //生成baseurl$baseurl = qiniu_rs_makebaseurl($domain, $key);//生成fopurl$imginfo = new qiniu_imageinfo;$imginfourl = $imginfo->makerequest($baseurl);//对fopurl 进行签名,生成privateurl。 公有bucket 此步可以省去。$getpolicy = new qiniu_rs_getpolicy();$imginfoprivateurl = $getpolicy->makerequest($imginfourl, null);echo ====> imageinfo privateurl: \n;echo $imginfoprivateurl . \n;
将$imginfoprivateurl粘贴到浏览器地址栏中就可以查看该图像的信息了。
1.2 查看图片exif信息require_once(qiniu/rs.php);require_once(qiniu/fop.php);$key = 'pic.jpg';$domain = 'phpsdk.qiniudn.com';$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey); //生成baseurl$baseurl = qiniu_rs_makebaseurl($domain, $key);//生成fopurl$imgexif = new qiniu_exif;$imgexifurl = $imgexif->makerequest($baseurl);//对fopurl 进行签名,生成privateurl。 公有bucket 此步可以省去。$getpolicy = new qiniu_rs_getpolicy();$imgexifprivateurl = $getpolicy->makerequest($imgexifurl, null);echo ====> imageview privateurl: \n;echo $imgexifprivateurl . \n;
1.3 生成图片预览require_once(qiniu/rs.php);require_once(qiniu/fop.php);$key = 'pic.jpg';$domain = 'phpsdk.qiniudn.com';$accesskey = '';$secretkey = '';qiniu_setkeys($accesskey, $secretkey); //生成baseurl$baseurl = qiniu_rs_makebaseurl($domain, $key);//生成fopurl$imgview = new qiniu_imageview;$imgview->mode = 1;$imgview->width = 60;$imgview->height = 120;$imgviewurl = $imgview->makerequest($baseurl);//对fopurl 进行签名,生成privateurl。 公有bucket 此步可以省去。$getpolicy = new qiniu_rs_getpolicy();$imgviewprivateurl = $getpolicy->makerequest($imgviewurl, null);echo ====> imageview privateurl: \n;echo $imgviewprivateurl . \n;
贡献代码
许可证copyright © 2013 qiniu.com
基于 mit 协议发布:
www.opensource.org/licenses/mit
七牛云存储提供的免费额度:
存储空间10gb
每月 put/delete 10万次请求
每月下载流量10gb
每月 get 100万次请求
欢迎关注方倍工作室微信,了解我们及行业的最新动态
http://www.bkjia.com/phpjc/440122.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/440122.htmltecharticlephp sdk v6 此 sdk 适用于 php 5.1.0 及其以上版本。基于七牛云存储官方api构建。使用此 sdk 构建您的网络应用程序,能让您以非常便捷地方式将...