擼表情開發過程中使用騰訊雲存儲的接入實例分享

推薦一下一個有趣的表情包收集網站,也可以在線製作表情包,歡迎訪問:擼表情


擼表情(http://www.lubiaoqing.com)這個網站是業餘時間開發的一個網站,涉及到大量表情包的檢索和存儲,個人服務器肯定難以爲繼,所以選擇了騰訊雲存儲。

在對接過程中,使用了騰訊雲對象存儲服務 Java SDK,下載地址:github項目

注意有個坑的地方就是必須是JDK1.7!!!

pom.xml 添加依賴

<dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>3.3</version>
</dependency>
然後相關API文檔也是很完備的,如下:

文件操作

上傳文件

方法原型

String uploadFile(UploadFileRequest request);

參數說明

參數名 類型 默認值 參數描述
request UploadFileRequest 上傳文件類型請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,文件路徑不能以/結尾, 例如 /mytest/demo.txt
localPath String 構造函數或set方法 要上傳的本地文件的絕對路徑
bizAttr String 構造函數或set方法 文件的備註,主要用於對該文件用途的描述
insertOnly InsertOnly (枚舉) NO_OVER_WRITE (不覆蓋) set方法 是否直插入不覆蓋已存在的文件, NO_OVER_WRITE表示只直插入不覆蓋, 當文件存在返回錯誤 OVER_WRITE 表示允許覆蓋

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess, 'data':\$data}, code爲0表示成功, message爲SUCCESS或者失敗原因, data中包含相關的屬性, 詳情請參見返回值模塊

示例

UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName,         "/sample_file.txt", "local_file_1.txt");
String uploadFileRet = cosClient.uploadFile(uploadFileRequest);

獲取文件屬性

方法原型

String statFile(StatFileRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request StatFileRequest 獲取文件屬性請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,文件路徑不能以/結尾, 例如 /mytest/demo.txt

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess, 'data':\$data}, code爲0表示成功, message爲SUCCESS或者失敗原因, data中包含相關的屬性, 詳情請參見返回值模塊

示例

StatFileRequest statFileRequest = new StatFileRequest(bucketName, "/sample_file.txt");
String statFileRet = cosClient.statFile(statFileRequest);

更新文件屬性

方法原型

String updateFile(UpdateFileRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request UpdateFileRequest 更新文件屬性請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,文件路徑不能以/結尾, 例如 /mytest/demo.txt
bizAttr String set方法 文件的備註,主要用於對改文件用途的描述
authority String (枚舉) set方法 文件權限,默認是繼承bucket的權限合法取值: eInvalid(繼承bucket), eWRPrivate(私有讀寫), eWPrivateRPublic(私有寫, 公有讀)
cacheControl String set方法 參見HTTP的Cache-Control
contentType String set方法 參見HTTP的Content-Type
contentLanguage String set方法 參見HTTP的Content-Language
contentDisposition String set方法 參見HTTP的Content-Disposition
x-cos-meta- String set方法 自定義HTTP 頭,參數必須以x-cos-meta-開頭,值由用戶定義,可設置多個

tips: 更新屬性可以選擇其中的某幾個,對於HTTP頭部cache_control,content_type, content_disposition和x-cos-meta-, 如果本次只更新其中的某幾個,其他的都會被抹掉,即這4個屬性是整體更新。

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess}, code爲0表示成功, message爲SUCCESS或者失敗原因, 詳情請參見返回值模塊

示例

UpdateFileRequest updateFileRequest = new UpdateFileRequest(bucketName, "/sample_file.txt");

updateFileRequest.setBizAttr("測試目錄");
updateFileRequest.setAuthority(FileAuthority.WPRIVATE);
updateFileRequest.setCacheControl("no cache");
updateFileRequest.setContentDisposition("cos_sample.txt");
updateFileRequest.setContentLanguage("english");
updateFileRequest.setContentType("application/json");
updateFileRequest.setXCosMeta("x-cos-meta-xxx", "xxx");
updateFileRequest.setXCosMeta("x-cos-meta-yyy", "yyy");

String updateFileRet = cosClient.updateFile(updateFileRequest);

移動文件(重命名文件)

方法原型

String moveFile(MoveFileRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request MoveFileRequest 移動文件請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,文件路徑不能以/結尾, 例如 /mytest/demo.txt
overWrite OverWrite OverWrite.NO_OVER_WRITE 構造函數或set方法 是否覆蓋, 0(默認): 不覆蓋, 1: 覆蓋

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess}, code爲0表示成功, message爲SUCCESS或者失敗原因, 詳情請參見返回值模塊

示例

MoveFileRequest moveFileRequest = new MoveFileRequest(bucketName, "/sample_file.txt", "/sample_file_move.txt");
String moveFileRet = cosClient.moveFile(moveFileRequest);

刪除文件

方法原型

String delFile(DelFileRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request DelFileRequest 刪除文件請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,文件路徑不能以/結尾, 例如 /mytest/demo.txt

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess}, code爲0表示成功, message爲SUCCESS或者失敗原因, 詳情請參見返回值模塊

示例

DelFileRequest delFileRequest = new DelFileRequest(bucketName, "/sample_file_move.txt");
String delFileRet = cosClient.delFile(delFileRequest);

目錄操作

創建目錄

方法原型

String createFolder(CreateFolderRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request CreateFolderRequest 創建目錄請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,目錄路徑必須以/結尾, 例如 /mytest/dir/
bizAttr String set方法 目錄的備註,主要用於對目錄用途的描述

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess}, code爲0表示成功, message爲SUCCESS或者失敗原因, 詳情請參見返回值模塊

示例

CreateFolderRequest createFolderRequest = new CreateFolderRequest(bucketName, "/sample_folder/");
String createFolderRet = cosClient.createFolder(createFolderRequest);

獲取目錄屬性

方法原型

String statFolder(StatFolderRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request StatFolderRequest 獲取目錄屬性請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,目錄路徑必須以/結尾, 例如 /mytest/dir/

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess, 'data':\$data}, code爲0表示成功, message爲SUCCESS或者失敗原因, data中包含相關的屬性, 詳情請參見返回值模塊

示例

StatFolderRequest statFolderRequest = new StatFolderRequest(bucketName, "/sample_folder/");
String statFolderRet = cosClient.statFolder(statFolderRequest);

更新目錄屬性

方法原型

String updateFolder(UpdateFolderRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request UpdateFolderRequest 更新目錄屬性請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,目錄路徑必須以/結尾, 例如 /mytest/dir/
bizAttr String set方法 目錄的備註,主要用於對目錄用途的描述

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess}, code爲0表示成功, message爲SUCCESS或者失敗原因, 詳情請參見返回值模塊

示例

UpdateFolderRequest updateFolderRequest = new UpdateFolderRequest(bucketName, "/sample_folder/");
updateFolderRequest.setBizAttr("這是一個測試目錄");
String updateFolderRet = cosClient.updateFolder(updateFolderRequest);

獲取目錄列表

方法原型

String listFolder(ListFolderRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request ListFolderRequest 獲取目錄成員請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,目錄路徑必須以/結尾, 例如 /mytest/dir/
num int 199 構造函數或set方法 獲取列表成員的數量,最大爲199
pattern ListPattern (枚舉) BOTH 構造函數或set方法 獲取列表成員類型, 合法取值 BOTH(獲取文件和目錄), DIR_ONLY(只獲取目錄), FILE_ONLY(只獲取文件)
prefix String 構造函數或set方法 搜索成員的前綴, 例如prefix爲test表示只搜索以test開頭的文件或目錄
context String 構造函數或set方法 搜索上下文, 由上一次list的結果返回,作爲這一次搜索的起點,用於循環獲取一個目錄下的所有成員
order ListOrder (枚舉) POSITIVE (正序) 構造函數或set方法 搜索順序, POSITIVE: 正序, NEGATIVE: 逆序

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess, 'data':\$data}, code爲0表示成功, message爲SUCCESS或者失敗原因, data中包含成員列表, 詳情請參見返回值模塊

示例

ListFolderRequest listFolderRequest = new ListFolderRequest(bucketName, "/sample_folder/");
String listFolderRet = cosClient.listFolder(listFolderRequest);

刪除目錄

方法原型

String delFolder(DelFolderRequest request);

參數說明

參數名 參數類型 默認值 參數描述
request DelFolderRequest 刪除目錄請求
request成員 類型 默認值 設置方法 描述
bucketName String 構造函數或set方法 bucket名稱
cosPath String 構造函數或set方法 cos路徑, 必須從bucket下的根/開始,目錄路徑必須以/結尾, 例如 /mytest/dir/

返回結果說明

返回值類型 返回值描述
String {'code':\$code, 'message':$mess}, code爲0表示成功, message爲SUCCESS或者失敗原因, 詳情請參見返回值模塊

示例

DelFolderRequest delFolderRequest = new DelFolderRequest(bucketName, "/sample_folder/");
String delFolderRet = cosClient.delFolder(delFolderRequest);

簽名管理

簽名模塊提供了生成多次簽名、單次簽名和下載簽名的接口,其中多次簽名和單次簽名在文件和目錄操作的api內部使用,用戶不用關心,下載簽名用於方便用戶生成下載私有bucket的文件簽名。

多次簽名

方法原型

String getPeriodEffectiveSign(String bucketName, String cosPath, Credentials cred, long expired)

使用場景

上傳文件, 重命名文件, 創建目錄, 獲取文件目錄屬性, 拉取目錄列表

參數說明

參數名 參數類型 默認值 參數描述
bucket String bucket名稱
cos_path String 要簽名的cos路徑
cred Credentials 用戶身份信息, 包括appid, secretId, secretkey
expired long 簽名過期時間, UNIX時間戳

返回結果說明

base64編碼的字符串

示例

Credentials cred = new Credentials(appId, secretId, secretKey);
long expired = System.currentTimeMillis() / 1000 + 600;
String signStr = Sign.getPeriodEffectiveSign(bucketName, "/pic/test.jpg", cred, expired);

單次簽名

方法原型

String getOneEffectiveSign(String bucketName, String cosPath, Credentials cred)

使用場景

刪除和更新文件目錄

參數說明

參數名 參數類型 默認值 參數描述
bucket unicode bucket名稱
cos_path unicode 要簽名的cos路徑
cred Credentials 用戶身份信息, 包括appid, secretId, secretkey

返回結果說明

base64編碼的字符串

示例

Credentials cred = new Credentials(appId, secretId, secretKey);
String signStr = Sign.getOneEffectiveSign(bucketName, "/pic/test.jpg", cred);

下載簽名

方法原型

String getDownLoadSign(String bucketName, String cosPath, Credentials cred, long expired)

使用場景

生成文件的下載簽名, 用於下載私有bucket的文件

參數說明

參數名 參數類型 默認值 參數描述
bucket unicode bucket名稱
cos_path unicode 要簽名的cos路徑
cred Credentials 用戶身份信息, 包括appid, secretId, secretkey
expired long 簽名過期時間, UNIX時間戳

返回結果說明

base64編碼的字符串

示例

Credentials cred = new Credentials(appId, secretId, secretKey);
long expired = System.currentTimeMillis() / 1000 + 600;
String signStr = Sign.getDownLoadSign(bucketName, "/pic/test.jpg", cred, expired);

操作返回值說明

code 含義
0 操作成功
-1 輸入參數錯誤, 例如輸入的本地文件路徑不存在, cos文件路徑不符合規範
-2 網絡錯誤, 如404等
-3 連接cos時發生異常,如連接超時
-71 操作頻率過快,觸發cos的頻控

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章