cayman引擎的php-sdk說明文檔

###SDKjavascript

  • 下載包:www.xxx.xxx

###環境說明php

  • 操做系統:centos7.x(x86)
  • PHP 5.6.4+,可經過php -v命名查看當前的php版本
  • curl 擴展,可經過php -m命令查看curl擴展是否已經安裝好

###目錄架構java

類名 解釋 引入依賴
request.php 請求中間類 無需引入
httprequest.class.php http請求類 無需引入
cluster.php 集羣模塊的SDK 按需引入
user.php 用戶模塊的SDK 按需引入
bucket.php 桶管理模塊的SDK 按需引入
object.php 對象管理模塊的SDK 按需引入
pretreat.php 預處理模塊的SDK 按需引入
meta.php 元數據模塊的SDK 按需引入
demo.test.php 入門示例 /

###快速入門 爲了您更快速的上手,咱們給您提供了一個示例:demo.test.php。其中已經導入相關依賴庫,您只需在環境配置完成後運行demo.test.php,即可以查詢到cayman當前的版本信息web

爲了防止代碼衝突,咱們已將sdk置於命名空間caymansdk下,請您注意文件引入方式ajax

<?php
use phplibs\caymansdk as caymansdk;   // 引用namespace
require_once __DIR__ .'/cluster.php'; // 引入集羣管理sdk
try {
    // 實例化Cluster類
    $_cluster = new caymansdk\Cluster();;

    //調用getVersion方法
    $res = $_cluster->getVersion(); 

    // 判斷調用是否成功並返回相關信息
    if($res["code"] === CODE_SUCCESS){
        echo json_encode(['code' => CODE_SUCCESS, 'result' => $res['result']]);
    } else{
        $msg = $res["msg"] ? $res["msg"] : 'system error';
        echo json_encode(['code' => CODE_ERROR, 'msg' => $msg]);
    }
} catch (OssException $e) {
    print $e->getMessage();
}
?>

###基本操做 ####添加依賴 在調用各功能模塊的SDK前,您須要導入相關模塊的SDK文件,以下列代碼所示:json

<?php
use phplibs\caymansdk as caymansdk;   // 引用namespace
require_once __DIR__ .'/bucket.php';  // 引入您所需的模塊SDK
......
?>

參照demo.test.php中的示例格式. ####建立桶(存儲空間) 和快速入門所展現的同樣,您能夠按照下面的代碼新建一個桶(存儲空間)centos

<?php
use phplibs\caymansdk as caymansdk;   // 引用namespace
require_once __DIR__ .'/bucket.php';  // 引入桶管理sdk

$userid = "<您被受權的用戶名>";
$bucket = "<您想建立的桶名,注意命名規範>";

$_bucket = new caymansdk\Bucket();
$res = $_bucket->createBucket($bucket, $userid); 

if($res["code"] === CODE_SUCCESS){
    echo json_encode(['code' => CODE_SUCCESS, 'result' => $res['result']]);
} else{
    $msg = $res["msg"] ? $res["msg"] : 'system error';
    echo json_encode(['code' => CODE_ERROR, 'msg' => $msg]);
}
?>

####上傳文件(對象) 文件(object)是cayman中最基本的數據單元,文件的上傳分爲三步完成createObjectwriteObjectfinishObject.目前沒有將三者合併封裝,因此您須要根據接口自行補全該部分代碼。但咱們提供一個JaveScript版本的示例代碼,實現文件上傳功能 #####建立一個空文件對象(createObject)瀏覽器

/**
* 建立一個空文件對象
*   @param {string}$bucket  存儲桶名(必選)
*   @param {string}$userid  存在的用戶名(必選)
*   @param {string}$object  對象名稱(必選)
*   @param {int64}$size     對象大小(必選)
*   @return arr['code'=>200]
*/

    public function createObject($bucket, $userid, $object, $size){
        $param = [
            'bucket' => $bucket,
            'userid' => $userid,
            'object' => $object,
            'size'   => $size
        ];
        $res = $this->post(CAYMAN_CREATE_OBJECT, $param);
        return json_decode($res, true);  
    }

#####上傳對象數據塊(writeObject)架構

/**
    * 上傳數據塊
    *   @param {string}$bucket  存儲桶名(必選)
    *   @param {string}$userid  存在的用戶名(必選)
    *   @param {string}$object  對象名稱(必選)
    *   @param {int64}$offset   寫入數據塊的起始位置(必選)
    *   @param {int}$length     寫入數據塊大小(必選)
    *   @return arr['code'=>200]
    */
     public function writeObject($bucket, $userid, $object, $offset, $length){
        $param = [
            'bucket' => $bucket,
            'userid' => $userid,
            'object' => $object,
            'offset' => $offset,
            'length' => $length
        ];
        $res = $this->post(CAYMAN_FILE_UPLOAD_WRITE, $param);
        return json_decode($res, true);
    }

#####完成文件上傳(finishObject)app

/**
    * 完成文件上傳
    *   @param {string}$bucket   存儲桶名(必選)
    *   @param {string}$userid   存在的用戶名(必選)
    *   @param {string}$object   對象名稱(必選)
    *   @param {bool}$isconvert  是否預處理(可選)
    *   @return arr['code'=>200]
    */
     public function finishObject($bucket, $userid, $object, $isconvert){
        $param = [
            'bucket' => $bucket,
            'userid' => $userid,
            'object' => $object,
            'isconvert' => $isconvert,
        ];
        $res = $this->post(CAYMAN_FILE_UPLOAD_FINISH, $param);
        return json_decode($res, true);
    }

#####封裝三個接口實現文件上傳(JS版)

var formData = new FormData();

    // 瀏覽器兼容處理
    var func = (opts.file.mozSlice ? 'mozSlice' : (opts.file.webkitSlice ? 'webkitSlice' : 'slice'));

    // 添加文件數據塊
    formData.append("file", opts.file[func](startSize, endSize));

    // 添加其餘參數        
    formData.append("bucket", bucket);
    formData.append("object", object);
    formData.append("offset", startSize);
    formData.append("length", endSize - startSize);

    // 開啓ajax請求
    var xhr = new XMLHttpRequest();
    xhr.open("POST", opts.target);
    xhr.setRequestHeader('Authorization', oauth);

    // 回調函數--分塊持續上傳文件
    xhr.onreadystatechange = function(){
        if (xhr.readyState === 4){
            if(canceled) return;
            try{
                var result = JSON.parse(xhr.responseText);
                if(result.code === 200){
                    done = true;
                    owner.progress();
                    sendData();
                }else{
                    done = false;
                    owner.onerror(result.msg);
                }
            }catch(e){
                owner.onerror("unknow error "+e);
            }
        }
    }
    xhr.send(formData);

####下載文件 上傳文件後,您能夠經過下載讀取它的內容。如下爲示例代碼

<?php
        use phplibs\caymansdk as caymansdk;   
        require_once __DIR__ .'/object.php'; 

        $userid = "<您被受權的用戶名>";
        $bucket = "<您想建立的桶名,注意命名規範>";
        $object = "<要讀取的對象ID>";
        $offset = "<要讀取的文件偏移量>";
        $length = "<要讀取連續多長的數據,單位byte>";

        $_object = new caymansdk\Object();
        $res = $_object->readObject($bucket, $userid, $object, $offset, $length); 

        if($res["code"] === CODE_SUCCESS){
            echo json_encode($res,true);
        } else{
            $msg = $res["msg"] ? $res["msg"] : 'system error';
            echo json_encode(['code' => CODE_ERROR, 'msg' => $msg]);
        }
    ?>

####列舉桶內文件 完成上傳後,須要查看桶內全部文件信息,實現以下面代碼所示:

<?php
        use phplibs\caymansdk as caymansdk;   
        require_once __DIR__ .'/bucket.php'; 
        $userid = "桶的擁有者";
        $bucket = "存儲桶名";
        $maxcount = "返回的最大對象數";

        $_bucket = new caymansdk\Bucket();;
        $res = $_bucket->listObjects($bucket, $userid, $maxcount); 

        if($res["code"] === CODE_SUCCESS){
            echo json_encode(['code' => CODE_SUCCESS, 'result' => $res['result']]);
        } else{
            $msg = $res["msg"] ? $res["msg"] : 'system error';
            echo json_encode(['code' => CODE_ERROR, 'msg' => $msg]);
        }
    ?>

####刪除文件 如下代碼能夠刪除指定存儲空間下指定的文件(Object):

<?php
        use phplibs\caymansdk as caymansdk;   
        require_once __DIR__ .'/object.php'; 

        $userid = "<用戶名>";
        $bucket = "<對象所屬的桶名稱>";
        $object = "<要刪除的對象名稱>";

        $_object = new caymansdk\Object();
        $res = $_object->removeObject($bucket, $userid, $object); 

        if($res["code"] === CODE_SUCCESS){
            echo json_encode(['code' => CODE_SUCCESS]);
        } else{
            $msg = $res["msg"] ? $res["msg"] : 'system error';
            echo json_encode(['code' => CODE_ERROR, 'msg' => $msg]);
        }
    ?>
相關文章
相關標籤/搜索