七牛云图床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%