程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 七牛雲存儲官方接口PHP版本

七牛雲存儲官方接口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.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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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>/<key>

示例代碼:

$key = 'pic.jpg';
$domain = 'phpsdk.qiniudn.com';
//$baseUrl 就是您要訪問資源的地址
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);

其中可以到七牛雲存儲開發者自助網站綁定, 域名可以使用自己一級域名的或者是由七牛提供的二級域名(<bucket>.qiniudn.com)。注意,尖括號不是必需,代表替換項。

2.2 私有資源下載

私有資源必須通過臨時下載授權憑證(downloadToken)下載,如下:

[GET] http://<domain>/<key>?e=<deadline>&token=<downloadToken>

注意,尖括號不是必需,代表替換項。
私有下載鏈接可以使用 SDK 提供的如下方法生成:

require_once("qiniu/rs.php");

$key = 'pic.jpg';
$domain = 'phpsdk.qiniudn.com';
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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 = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';

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萬次請求

 

歡迎關注方倍工作室微信,了解我們及行業的最新動態

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved