七牛云存储官方接口PHP版本_PHP教程
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 查看图像属性
- 1.2 查看图片EXIF信息
- 1.3 生成图片预览
- 1 图像
- 贡献代码
- 许可证
应用接入
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://domain>
推荐阅读
-
七牛云存储官方接口PHP版本_PHP教程
-
七牛云存储 - 小白求助:关于百度ueditor编辑器 php版 文件保存位置的问题
-
七牛云存储 - cli和普通模式的php如何通信?
-
七牛云存储 - 无法处理 php 处理过的缩略图吗?
-
Kindeditor上传图片到七牛云存储插件(PHP版),
-
七牛云存储 - 七牛:php 生成带多个策略的 token 的问题
-
七牛云存储 - 七牛php SDK 如何对HLS进行加密?
-
七牛云存储 - 七牛php sdk 有问题
-
七牛云存储 - PHP-sdk获取不到列表文件,请问怎么解决?
-
Kindeditor上传图片到七牛云存储插件(PHP版),_PHP教程