天天看點

騰訊COS存儲的使用

文章目錄

        一、簡介

        二、使用代碼

            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