0%

七牛云图床API接口指南

登录到七牛云官网注册一个账号

地址:http://www.qiniu.com

获取对应的七牛云秘钥

位置:个人面板->秘钥管理
获取一对 AccessKey/SecretKey 秘钥

建立存储空间

位置:对象存储
对象存储中可以管理上传的文件、对空间的设置、域名绑定、样式分割符设置及图片样式设定。

基本用法

文档地址:http://developer.qiniu.com/code/v7/sdk/php.html#usage

1、引入SDK

无论你是通过哪种方式安装的 SDK,只需要一句简单的 require 语句将安装好的SDK包含到你的项目中。请参考如下表格,找到适合你的安装方式,将SDK引入到你的项目中。请用你项目中的实际路径替换 path_to_sdk。

1
2
3
4
5
6
7
8
9
10
11
Composer 安装

require 'path_to_sdk/vendor/autoload.php';

下载Composer安装包

require 'path_to_sdk/vendor/autoload.php';

下载源码安装包

require 'path_to_sdk/autoload.php';

2、SDK结构

可以直接查看我们的SDK目录,即可大致了解我们SDK的结构。

  • 最外层包含:配置文件, 鉴权和一些公共的函数
  • HTTP 目录主要包含了一些对 http 进行封装的类,这块你可以不用关心。
  • Storage 目录主要包含两大块:Bucket 中文件的管理和文件的上传。
  • Processing 目录主要包含文件的处理,文件处理又包含两个方面:同步处理和异步处理。

为了帮助您更好的了解和使用我们的sdk,我们还提供了各种使用示例。 如果使用中遇到问题,可以通过Github或者我们的工单进行反馈。下面我们对一些关键点进行简单的介绍,方便您快速入门。

3、鉴权类

在使用七牛的SDK的过程中鉴权是很重要的一块,不管是上传鉴权,下载签权, 还是回调的签权。 PHP SDK 中的Auth类封装了所有的鉴权方式。 所以在使用 PHP SDK 时基本都会先对鉴权类进行初始化:

1
2
3
4
5
6
7
8
9
10
11
<?php
require 'path_to_sdk/vendor/autoload.php';

use Qiniu\Auth;

// 用于签名的公钥和私钥
$accessKey = 'Access_Key';
$secretKey = 'Secret_Key';

// 初始化签权对象
$auth = new Auth($accessKey, $secretKey);

初始化好Auth 类后,就可以调用相应的方法了,比如生成私有下载链接方法 privateDownloadUrl,获取上传Token方法 uploadToken,验证回调方法 verifyCallback等。

上传流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
require_once 'path_to_sdk/vendor/autoload.php'; //引入类库文件 建议用composer方式

// 引入鉴权类
use Qiniu\Auth; //命名空间
// 引入上传类
use Qiniu\Storage\UploadManager; //命名空间

// 需要填写你的 Access Key 和 Secret Key //这里就用到了注册账户后用到的两个秘钥
$accessKey = 'Access_Key';
$secretKey = 'Secret_Key';

// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);

// 要上传的空间
$bucket = 'Bucket_Name'; //设定的上传空间名

// 生成上传 Token
$token = $auth->uploadToken($bucket);

// 要上传文件的本地路径
$filePath = './php-logo.png'; //上传时候图片在本地的路径

// 上传到七牛后保存的文件名
$key = 'my-php-logo.png'; //保存到七牛上面的命名

// 初始化 UploadManager 对象并进行文件的上传
$uploadMgr = new UploadManager();

// 调用 UploadManager 的 putFile 方法进行文件的上传
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
echo "\n====> putFile result: \n";
if ($err !== null) {
var_dump($err); //返回结果根据需要处理
} else {
var_dump($ret);
}

文件下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require 'path_to_sdk/vendor/autoload.php';

// 引入鉴权类
use Qiniu\Auth;

// 需要填写你的 Access Key 和 Secret Key
$accessKey = 'Access_Key';
$secretKey = 'Secret_Key';

// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);

//baseUrl构造成私有空间的域名/key的形式
$baseUrl = 'http://domain/key'; //空间名+文件名 的格式
$authUrl = $auth->privateDownloadUrl($baseUrl); //加密处理后再返回
echo $authUrl;?>

删除单个文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
require_once 'path_to_sdk/vendor/autoload.php';

use Qiniu\Auth;
use Qiniu\Storage\BucketManager;

$accessKey = 'Access_Key';
$secretKey = 'Secret_Key';

//初始化Auth状态
$auth = new Auth($accessKey, $secretKey);

//初始化BucketManager
$bucketMgr = new BucketManager($auth);

//你要测试的空间, 并且这个key在你空间中存在
$bucket = 'Bucket_Name';
$key = 'php-logo.png';

//删除$bucket 中的文件 $key
$err = $bucketMgr->delete($bucket, $key); //空间名 和 未加密的文件名
echo "\n====> delete $key : \n";
if ($err !== null) {
var_dump($err);
} else {
echo "Success!";
}

还有更多的操作请参考官方文档,地址:http://developer.qiniu.com/code/v7/sdk/php.html#install

实际案例(实战项目中的方法封装)

1
2
3
4
5
//七牛云图片上传配置
const ACCESS_KEY = 'byJc-8owLt9G5ljXsNYbTsfOCKzQgTV4UTPu3sCG' ; //私钥AK
const SECRET_KEY = '6ybTxRxyDGndimpVMgK_k-6s1prGIPkGtB0Xolyb' ; //私钥SK
const QINIU_BUCKET = 'op-zbj' ; //空间名(对象存储中)
const BASE_URL = 'http://ohsllkayi.bkt.clouddn.com' ;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* 上传图片到七牛云
* @param $filePath 图片的本地路径
* @param $fileName 图片名
* @return mixed array
* @throws Exception
*/
public function UploadPicToQiNiu ($fileName , $filePath)
{
// 初始化签权对象
$auth = new Auth(lib_Constant:: ACCESS_KEY , lib_Constant:: SECRET_KEY );

// 生成上传 Token
$token = $auth-> uploadToken (lib_Constant:: QINIU_BUCKET) ;

// 上传到七牛后保存的文件名
$key = 'qiniu_'.md5( $fileName .rand(100 , 999)) ;

// 初始化 UploadManager 对象并进行文件的上传
$uploadMgr = new UploadManager() ;

// 调用 UploadManager 的 putFile 方法进行文件的上传
list ( $ret, $err ) = $uploadMgr -> putFile( $token , $key , $filePath) ;
if ($err !== null) {
return $err ;
} else {
return $ret ;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 从七牛云上获取图片到本地
* @param $filePath 数据库中的图片地址
* @return string
*/
public function downloadPicToQiNiu ($filePath )
{
// 构建鉴权对象
$auth = new Auth(lib_Constant:: ACCESS_KEY , lib_Constant:: SECRET_KEY );
//baseUrl构造成私有空间的域名/key的形式
$baseUrl = lib_Constant:: BASE_URL. '/' .$filePath ;
$authUrl = $auth-> privateDownloadUrl ($baseUrl ) ;
return $authUrl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 批量获取七牛云上的图片
* @param $filePathArray
* @return array|bool
*/
public function batchDownloadPicToQiNiu ( $filePathArray)
{
if ( empty( $filePathArray )){
return false;
}
// 构建鉴权对象
$returnFullImagesPath = [] ;
$auth = new Auth(lib_Constant:: ACCESS_KEY , lib_Constant:: SECRET_KEY );
foreach ($filePathArray as $filePath){
//baseUrl构造成私有空间的域名/key的形式
$baseUrl = lib_Constant:: BASE_URL. '/' .$filePath ;
$returnFullImagesPath [] = $auth ->privateDownloadUrl ( $baseUrl) ;
}
return $returnFullImagesPath ;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 从七牛云上删除图片
* @param $filePath
* @return mixed
*/
public function deleteToQiNiu ($filePath )
{
//初始化Auth状态
$auth = new Auth(lib_Constant:: ACCESS_KEY , lib_Constant:: SECRET_KEY );
//初始化BucketManager
$bucketMgr = new BucketManager( $auth );

//删除$bucket 中的文件 $key
$err = $bucketMgr -> delete(lib_Constant:: QINIU_BUCKET ,$filePath ) ;
// echo "\n====> delete $key : \n";
if ( $err !== null ) {
return fasle ;
} else {
return true;
}
}