侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

cayman引擎的php-sdk说明文档

2023-12-08 星期五 / 0 评论 / 0 点赞 / 98 阅读 / 10239 字

###SDK下载包:www.xxx.xxx###环境说明操作系统:centos7.x(x86)PHP 5.6.4+,可通过php -v命名查看当前的php版本curl 扩展,可通过php -m命令查看

###SDK

  • 下载包:www.xxx.xxx

###环境说明

  • 操作系统:centos7.x(x86)
  • PHP 5.6.4+,可通过php -v命名查看当前的php版本
  • curl 扩展,可通过php -m命令查看curl扩展是否已经安装好

###目录架构

类名解释引入依赖
request.php请求中间类无需引入
httprequest.class.phphttp请求类无需引入
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当前的版本信息

.

为了防止代码冲突,我们已将sdk置于命名空间caymansdk下,请您注意文件引入方式

.
<?phpuse phplibs/caymansdk as caymansdk;   // 引用namespacerequire_once __DIR__ .'/cluster.php'; // 引入集群管理sdktry {    // 实例化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文件,如下列代码所示:

<?phpuse phplibs/caymansdk as caymansdk;   // 引用namespacerequire_once __DIR__ .'/bucket.php';  // 引入您所需的模块SDK......?>

参照demo.test.php中的示例格式.####创建桶(存储空间)和快速入门所展示的一样,您可以按照下面的代码新建一个桶(存储空间)

<?phpuse phplibs/caymansdk as caymansdk;   // 引用namespacerequire_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)

    /**    * 完成文件上传    *   @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]);        }    ?>

广告 广告

评论区