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]);
        }
    ?>
相关文章
相关标签/搜索