使用java實現騰訊雲存儲服務(COSClient)

今天的項目需要用騰訊雲來做雲存儲服務,剛開始一頭霧水,後來看了Java的API文檔和SDK文檔才慢慢有個瞭解,這次作下記錄,方便以後查看。

本地環境依賴

SDK 支持 JDK 1.7, 1.8 及以上版本。

安裝 SDK(maven 安裝)

<dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>5.4.6</version>
</dependency>

註冊好騰訊雲賬號,在騰訊雲上覆制這四個在代碼裏替換即可,ACCESSKEY,SECRETKEY,APPID,REGIONID

在這裏插入圖片描述創建存儲桶
在這裏插入圖片描述上傳上來的文件
在這裏插入圖片描述

初始化密鑰信息

    private static final String ACCESSKEY = "XXXXXX";
    private static final String SECRETKEY = "XXXXXX";
    private static final String BUCKETNAME = "XXXXXX-12517827811";
    private static final String APPID = "12517827811 ";
    private static final String REGIONID = "ap-guangzhou";
    private static final String KEY="MyFile1/zookeeper-3.4.8.tar.gz";
    private static final String KEY01="MyFile1/1.jpg";

初始化客戶端

       // 1 初始化用戶身份信息(secretId, secretKey)
        COSCredentials cred = new BasicCOSCredentials(ACCESSKEY, SECRETKEY);
        // 2 設置bucket的區域, COS地域的簡稱請參照 https://cloud.tencent.com/document/product/436/6224
        // clientConfig中包含了設置region, https(默認http), 超時, 代理等set方法, 使用可參見源碼或者接口文檔FAQ中說明
        ClientConfig clientConfig = new ClientConfig(new Region(REGIONID));
        // 3 生成cos客戶端
        COSClient cosClient = new COSClient(cred, clientConfig);

Java代碼(在main函數裏可以測試,不過都被我註釋掉了)

/**
 * @Author: SunJunxian
 * @Date: 2018/12/17
 * @Description: java實現騰訊雲存儲服務(COSClient)
 * @REGIONID 區域
 * @KEY  上傳上雲之後的名字
 * @KEY01 需要刪除的文件
 */
public class CosClientTest {

    private static final String ACCESSKEY = "XXXXXX";
    private static final String SECRETKEY = "XXXXXX";
    private static final String BUCKETNAME = "XXXXXX-12517827811";
    private static final String APPID = "12517827811";
    private static final String REGIONID = "ap-guangzhou";
    private static final String KEY="MyFile1/zookeeper-3.4.8.tar.gz";
    private static final String KEY01="MyFile1/1.jpg";
    /**
     * 初始化CosClient相關配置, appid、accessKey、secretKey、region
     * @return
     */
    public static COSClient getCosClient() {
        // 1 初始化用戶身份信息(secretId, secretKey)
        COSCredentials cred = new BasicCOSCredentials(ACCESSKEY, SECRETKEY);
        // 2 設置bucket的區域, COS地域的簡稱請參照 https://cloud.tencent.com/document/product/436/6224
        // clientConfig中包含了設置region, https(默認http), 超時, 代理等set方法, 使用可參見源碼或者接口文檔FAQ中說明
        ClientConfig clientConfig = new ClientConfig(new Region(REGIONID));
        // 3 生成cos客戶端
        COSClient cosClient = new COSClient(cred, clientConfig);
        // bucket的命名規則爲{name}-{appid} ,此處填寫的存儲桶名稱必須爲此格式
        //String bucketName = BUCKETNAME;
        return cosClient;
    }

    /**
     * 上傳文件
     * @return
     * //絕對路徑和相對路徑都OK
     */
    public static String uploadFile() {
//        File localFile = new File("E:\\software\\JavaProject\\demo\\demo20\\src\\main\\resources\\1.jpg");
        File localFile = new File("E:\\software\\zookeeper-3.4.8.tar.gz");
        PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKETNAME, KEY, localFile);

        // 設置存儲類型, 默認是標準(Standard), 低頻(standard_ia),一般爲標準的
        putObjectRequest.setStorageClass(StorageClass.Standard);

        COSClient cc = getCosClient();
        try {
            PutObjectResult putObjectResult = cc.putObject(putObjectRequest);
            // putobjectResult會返回文件的etag
            String etag = putObjectResult.getETag();
            System.out.println(etag);
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        }
        // 關閉客戶端
        cc.shutdown();
        return null;
    }

    /**
     * 下載文件
     * @param bucketName
     * @param key
     * @return
     */
    public static String downLoadFile(String bucketName, String key) {
        File downFile = new File("E:\\software\\1.jpg");
        COSClient cc = getCosClient();
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);

        ObjectMetadata downObjectMeta = cc.getObject(getObjectRequest, downFile);
        cc.shutdown();
        String etag = downObjectMeta.getETag();
        return etag;
    }

    /**
     * 刪除文件
     * @param bucketName
     * @param key
     */
    public static void deleteFile(String bucketName, String key) {
        COSClient cc = getCosClient();
        try {
            cc.deleteObject(bucketName, key);
        } catch (CosClientException e) {
            e.printStackTrace();
        } finally {
            cc.shutdown();
        }

    }

    /**
     * 創建桶
     * @param bucketName
     * @return
     * @throws CosClientException
     * @throws CosServiceException
     */
    public static Bucket createBucket(String bucketName) throws CosClientException, CosServiceException {
        COSClient cc = getCosClient();
        Bucket bucket = null;
        try {
            bucket = cc.createBucket(bucketName);
        } catch (CosClientException e) {
            e.printStackTrace();
        } finally {
        }
        return bucket;
    };

    /**
     * 刪除桶
     * @param bucketName
     * @throws CosClientException
     * @throws CosServiceException
     */
    public void deleteBucket(String bucketName) throws CosClientException, CosServiceException {
        COSClient cc = getCosClient();
        try {
            cc.deleteBucket(bucketName);
        } catch (CosClientException e) {
            e.printStackTrace();
        } finally {
        }
    };

    /**
     * 判斷桶是否存在
     * @param bucketName
     * @return
     * @throws CosClientException
     * @throws CosServiceException
     */
    public static boolean doesBucketExist(String bucketName) throws CosClientException, CosServiceException {
        COSClient cc = getCosClient();
        boolean bucketExistFlag = cc.doesBucketExist(bucketName);
        return bucketExistFlag;
    };

    /**
     * 查看桶文件
     * @param bucketName
     * @return
     * @throws CosClientException
     * @throws CosServiceException
     */
    public static ObjectListing listObjects(String bucketName) throws CosClientException, CosServiceException {
        COSClient cc = getCosClient();

        // 獲取 bucket 下成員(設置 delimiter)
        ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
        listObjectsRequest.setBucketName(bucketName);
        // 設置 list 的 prefix, 表示 list 出來的文件 key 都是以這個 prefix 開始
        listObjectsRequest.setPrefix("");
        // 設置 delimiter 爲/, 即獲取的是直接成員,不包含目錄下的遞歸子成員
        listObjectsRequest.setDelimiter("/");
        // 設置 marker, (marker 由上一次 list 獲取到, 或者第一次 list marker 爲空)
        listObjectsRequest.setMarker("");
        // 設置最多 list 100 個成員,(如果不設置, 默認爲 1000 個,最大允許一次 list 1000 個 key)
        listObjectsRequest.setMaxKeys(100);

        ObjectListing objectListing = cc.listObjects(listObjectsRequest);
        // 獲取下次 list 的 marker
        String nextMarker = objectListing.getNextMarker();
        // 判斷是否已經 list 完, 如果 list 結束, 則 isTruncated 爲 false, 否則爲 true
        boolean isTruncated = objectListing.isTruncated();
        List<COSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
        for (COSObjectSummary cosObjectSummary : objectSummaries) {
            // get file path
            String key = cosObjectSummary.getKey();
            // get file length
            long fileSize = cosObjectSummary.getSize();
            // get file etag
            String eTag = cosObjectSummary.getETag();
            // get last modify time
            Date lastModified = cosObjectSummary.getLastModified();
            // get file save type
            String StorageClassStr = cosObjectSummary.getStorageClass();
        }
        return objectListing;
    }

    /**
     *查詢一個 Bucket 所在的 Region。
     * @param bucketName
     * @return
     * @throws CosClientException
     * @throws CosServiceException
     */
    public static String getBucketLocation(String bucketName) throws CosClientException , CosServiceException{
       COSClient cosClient = getCosClient();
        // bucket 的命名規則爲{name}-{appid} ,此處填寫的存儲桶名稱必須爲此格式
        String location = cosClient.getBucketLocation(bucketName);
        return location;
    }

    public static void main(String[] args) {
//        uploadFile();
//          downLoadFile(BUCKETNAME , KEY);
         // deleteFile(BUCKETNAME , KEY01);
//        createBucket("sunjunxian01-1251782781");
        //deleteBucket();
//        doesBucketExist("sunjunxian01-1251782781");
//        System.out.println(listObjects(BUCKETNAME));
        //System.out.println("BUCKETNAME的位置:" + getBucketLocation(BUCKETNAME));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章