文章目錄
一、簡介
二、使用代碼
1、擷取永久密鑰
2、添加pom.xml中的依賴
3、初始化使用者身份資訊
4、建立存儲桶(需要先進行3、初始化使用者身份資訊)
5、建立存儲桶(需要先進行3、初始化使用者身份資訊)
6、上傳對象(需要先進行3、初始化使用者身份資訊)(需要改3處)
7、查詢存儲桶中内容(需要先進行3、初始化使用者身份資訊)(需要改1處)
8、下載下傳檔案(需要先進行3、初始化使用者身份資訊)(需要改3處)
9、删除檔案(需要先進行3、初始化使用者身份資訊)(需要改2處)
10、關閉用戶端(需要先進行3、初始化使用者身份資訊)
三、完整代碼
一、簡介
對象存儲(Cloud Object Storage,COS)是騰訊雲提供的一種存儲海量檔案的分布式存儲服務,使用者可通過網絡随時存儲和檢視資料。騰訊雲 COS 使所有使用者都能使用具備高擴充性、低成本、可靠和安全的資料存儲服務。
COS 通過控制台、API、SDK 和工具等多樣化方式簡單、快速地接入,實作了海量資料存儲和管理。通過 COS 可以進行多格式檔案的上傳、下載下傳和管理。騰訊雲提供了直覺的 Web 管理界面,同時遍布全國範圍的 CDN 節點可以對檔案下載下傳進行加速。
二、使用代碼
1、擷取永久密鑰
若您使用永久密鑰初始化 COSClient,可以先在通路管理控制台中的 API 密鑰管理 頁面擷取 SecretId、SecretKey,使用永久密鑰适用于大部分的應用場景;
2、添加pom.xml中的依賴
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.8</version>
</dependency>
1
2
3
4
5
3、初始化使用者身份資訊
// 1 初始化使用者身份資訊(secretId, secretKey)。
String secretId = "COS_SECRETID";
String secretKey = "COS_SECRETKEY";
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 設定 bucket 的區域, COS 地域的簡稱請參照 https://cloud.tencent.com/document/product/436/6224
// clientConfig 中包含了設定 region, https(預設 http), 逾時, 代理等 set 方法, 使用可參見源碼或者常見問題 Java SDK 部分。
Region region = new Region("ap-guangzhou");
ClientConfig clientConfig = new ClientConfig(region);
// 3 生成 cos 用戶端。
COSClient cosClient = new COSClient(cred, clientConfig);
1
2
3
4
5
6
7
8
9
10
4、建立存儲桶(需要先進行3、初始化使用者身份資訊)
// 存儲桶名稱,格式:BucketName-APPID(後面ID每個使用者唯一)(需要改1)
String bucket = "exa-1300615854";
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
// 設定 bucket 的權限為 PublicRead(公有讀私有寫), 其他可選有私有讀寫, 公有讀寫
createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);
try{
Bucket bucketResult = cosClient.createBucket(createBucketRequest);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
12
在這裡插入圖檔描述
5、建立存儲桶(需要先進行3、初始化使用者身份資訊)
try {
List<Bucket> buckets = cosClient.listBuckets();
System.out.println(buckets);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
1
2
3
4
5
6
7
8
6、上傳對象(需要先進行3、初始化使用者身份資訊)(需要改3處)
try {
// 指定要上傳的檔案(需要改1)
File localFile = new File("D:\\11.pdf");
// 指定要上傳到的存儲桶(需要改2)
String bucketName = "start-1300615357";
// 指定要上傳到 COS 上對象鍵(需要改3)
String key = "exampl";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
7、查詢存儲桶中内容(需要先進行3、初始化使用者身份資訊)(需要改1處)
try {
// 桶容器的名稱(需要改1)
String bucket = "start-1300615357";
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
// 設定 bucket 名稱
listObjectsRequest.setBucketName(bucket);
// prefix 表示列出的 object 的 key 以 prefix 開始
listObjectsRequest.setPrefix("");
// 設定最大周遊出多少個對象, 一次 listobject 最大支援1000
listObjectsRequest.setMaxKeys(1000);
listObjectsRequest.setDelimiter("/");
ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
for (COSObjectSummary cosObjectSummary : objectListing.getObjectSummaries()) {
// 對象的路徑 key
String key = cosObjectSummary.getKey();
// 對象的 etag
String etag = cosObjectSummary.getETag();
// 對象的長度
long fileSize = cosObjectSummary.getSize();
// 對象的存儲類型
String storageClass = cosObjectSummary.getStorageClass();
System.out.println("key:" + key + "; etag:" + etag + "; fileSize:" + fileSize + ";storageClass:" + storageClass);
}
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
8、下載下傳檔案(需要先進行3、初始化使用者身份資訊)(需要改3處)
try{
// 指定對象所在的存儲桶(需要改1)
String bucketName = "start-1300615357";
// 指定對象在 COS 上的對象鍵(需要改2)
String key = "exampl";
// 指定要下載下傳到的本地路徑(需要制定檔案名)(需要改3)
File downFile = new File("D:\\12.pdf");
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
9、删除檔案(需要先進行3、初始化使用者身份資訊)(需要改2處)
删除 COS 上指定路徑的對象;
try {
// 指定對象所在的存儲桶(需要改1)
String bucketName = "start-1300615357";
// 指定對象在 COS 上的對象鍵(需要改2)
String key = "exampl";
cosClient.deleteObject(bucketName, key);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
1
2
3
4
5
6
7
8
9
10
11
10、關閉用戶端(需要先進行3、初始化使用者身份資訊)
關閉 cosClient,并釋放 HTTP 連接配接的背景管理線程。
// 關閉用戶端(關閉背景線程)
cosClient.shutdown();
1
2
三、完整代碼
下面是一個完成的代碼。主要把賬号資訊改為自己的就可以了;
package com.lydms.web;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.model.*;
import com.qcloud.cos.region.Region;
import java.io.File;
import java.util.List;
public class TestCos {
public static void main(String[] args) {
// 1 初始化使用者身份資訊(secretId, secretKey)。
String secretId = "AKIDTmyudXgm59zmT6T3GI5cw3wb1T5lmYeU";
String secretKey = "mJZTKp8GApJpBTErIWZNuCLJ5cTeuvhF";
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 設定 bucket 的區域, COS 地域的簡稱請參照 https://cloud.tencent.com/document/product/436/6224
// clientConfig 中包含了設定 region, https(預設 http), 逾時, 代理等 set 方法, 使用可參見源碼或者常見問題 Java SDK 部分。
Region region = new Region("ap-beijing");
ClientConfig clientConfig = new ClientConfig(region);
// 3 生成 cos 用戶端。
COSClient cosClient = new COSClient(cred, clientConfig);
// 查詢存儲桶清單
getbucket(cosClient);
// 上傳檔案到桶容器
upload(cosClient);
// 查詢存儲桶中内容
getContent(cosClient);
// 下載下傳檔案
downFile(cosClient);
// 删除檔案
deleteFile(cosClient);
// 建立桶容器
creatBucket(cosClient);
// 關閉用戶端(關閉背景線程)
cosClient.shutdown();
}
private static void creatBucket(COSClient cosClient) {
String bucket = "exa-1300415347";
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
// 設定 bucket 的權限為 PublicRead(公有讀私有寫), 其他可選有私有讀寫, 公有讀寫
createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);
try {
Bucket bucketResult = cosClient.createBucket(createBucketRequest);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
}
private static void deleteFile(COSClient cosClient) {
try {
// 指定對象所在的存儲桶(需要改1)
String bucketName = "start-1300415347";
// 指定對象在 COS 上的對象鍵(需要改2)
String key = "exampl";
cosClient.deleteObject(bucketName, key);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
}
private static void downFile(COSClient cosClient) {
try {
// 指定對象所在的存儲桶(需要改1)
String bucketName = "start-1300415347";
// 指定對象在 COS 上的對象鍵(需要改2)
String key = "exampl";
// 指定要下載下傳到的本地路徑(需要制定檔案名)(需要改3)
File downFile = new File("D:\\12.pdf");
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
}
private static void getContent(COSClient cosClient) {
try {
// 桶容器的名稱(需要改1)
String bucket = "start-1300415347";
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
// 設定 bucket 名稱
listObjectsRequest.setBucketName(bucket);
// prefix 表示列出的 object 的 key 以 prefix 開始
listObjectsRequest.setPrefix("");
// 設定最大周遊出多少個對象, 一次 listobject 最大支援1000
listObjectsRequest.setMaxKeys(1000);
listObjectsRequest.setDelimiter("/");
ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
for (COSObjectSummary cosObjectSummary : objectListing.getObjectSummaries()) {
// 對象的路徑 key
String key = cosObjectSummary.getKey();
// 對象的 etag
String etag = cosObjectSummary.getETag();
// 對象的長度
long fileSize = cosObjectSummary.getSize();
// 對象的存儲類型
String storageClass = cosObjectSummary.getStorageClass();
System.out.println("key:" + key + "; etag:" + etag + "; fileSize:" + fileSize + "; storageClass:" + storageClass);
}
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
}
private static void upload(COSClient cosClient) {
try {
// 指定要上傳的檔案(需要改1)
File localFile = new File("D:\\11.pdf");
// 指定要上傳到的存儲桶(需要改2)
String bucketName = "start-1300415347";
// 指定要上傳到 COS 上對象鍵(需要改3)
String key = "exampl";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
}
private static void getbucket(COSClient cosClient) {
try {
List<Bucket> buckets = cosClient.listBuckets();
System.out.println(buckets);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
}
}
————————————————
版權聲明:本文為CSDN部落客「ha_lydms」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/lydms/article/details/103667258