###SDKjavascript
###环境说明php
php -v
命名查看当前的php版本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中最基本的数据单元,文件的上传分为三步完成createObject
、writeObject
、finishObject
.目前没有将三者合并封装,因此您须要根据接口自行补全该部分代码。但咱们提供一个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]); } ?>