撸表情开发过程中使用腾讯云存储的接入实例分享
推薦一下一個有趣的表情包收集網站,也可以在線制作表情包,歡迎訪問:擼表情
?
擼表情(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 | 無 | 獲取文件屬性請求 |
| 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 | 無 | 更新文件屬性請求 |
| 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 | 無 | 移動文件請求 |
| 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 | 無 | 刪除文件請求 |
| 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 | 無 | 創建目錄請求 |
| 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 | 無 | 獲取目錄屬性請求 |
| 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 | 無 | 更新目錄屬性請求 |
| 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 | 無 | 獲取目錄成員請求 |
| 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 | 無 | 刪除目錄請求 |
| 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);操作返回值說明
| 0 | 操作成功 |
| -1 | 輸入參數錯誤, 例如輸入的本地文件路徑不存在, cos文件路徑不符合規范 |
| -2 | 網絡錯誤, 如404等 |
| -3 | 連接cos時發生異常,如連接超時 |
| -71 | 操作頻率過快,觸發cos的頻控 |
轉載于:https://www.cnblogs.com/semoon/p/6180899.html
總結
以上是生活随笔為你收集整理的撸表情开发过程中使用腾讯云存储的接入实例分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matches()方法
- 下一篇: 在cli命令行上显示当前数据库,以及查询