七牛云图床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
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?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等。

    ### 上传流程
    ````php
    <?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;
}
}
谢♪翔 wechat
坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------
0%