###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]); } ?>