腾讯云存储COS

这篇具有很好参考价值的文章主要介绍了腾讯云存储COS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:

对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。

网址:对象存储数据处理_COS数据处理_数据处理方案-腾讯云

大家可以选购这几种套餐

 选好套餐开通腾讯云存储对象Cos 开通以后的样子

cos文件存储,腾讯云,云计算,java

主要分为俩大类请求方式一种是你自己封装http3请求从后端去发请求,另一种比较简单我这里推荐大家使用SDK的 。

cos文件存储,腾讯云,云计算,java

导入pom.xml依赖

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

编写config配置文件

public interface configuration {
    //id
    String secretId="*****";
    //key
    String secretKey="******";
    //创建桶对象时需要
    String APPID = "****";
    //创建桶时需要的区域
    String REGIONID = "***";// 区域
}

 封装工具包文章来源地址https://www.toymoban.com/news/detail-526197.html

1.(对存储桶操作)

package com.baidu.util;

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.http.HttpProtocol;
import com.qcloud.cos.model.Bucket;
import com.qcloud.cos.model.CannedAccessControlList;
import com.qcloud.cos.model.CreateBucketRequest;
import com.qcloud.cos.region.Region;

import java.util.List;

import static com.baidu.config.configuration.*;

/**
 * 使用cos对数据桶的基本操作
 * */
public class cosBucketUtil {
    /**
     * * 初始化CosClient相关配置, appid、accessKey、secretKey、region * @return
     */
    public static COSClient getCosClient() {
       // 1 初始化用户身份信息(secretId, secretKey)。
       // SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); // 不传APPID也可以,APPID和ACCESSKE已经关联过
        // 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
        // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
       //REGIONID地域
        ClientConfig clientConfig = new ClientConfig(new Region(REGIONID));
        // 这里建议设置使用 https 协议
        // 从 5.6.54 版本开始,默认使用了 https
        clientConfig.setHttpProtocol(HttpProtocol.https);
        //生成cos客户端
        COSClient cosclient = new COSClient(cred, clientConfig);
        return cosclient;
    }
    /***
     * 创建桶
     * cosClient 客户端连接对象
     * bucketName 自定义名称
     *
     * */
    public static Bucket createBucket(COSClient cosClient,String  bucketName) throws CosClientException, CosServiceException {
        String bucket = bucketName+"-"+APPID; //存储桶名称,格式:BucketName-APPID
        CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
// 设置 bucket 的权限为 Private(私有读写), 其他可选有公有读私有写, 公有读写
        createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);
        Bucket bucketResult = cosClient.createBucket(createBucketRequest);
        return bucketResult;
    };
    /**
     * 查询桶列表
     * cosClient 客户端连接对象
     * */
    public static List<Bucket> listBuckets(COSClient cosClient) throws CosClientException, CosServiceException{
        // 如果只调用 listBuckets 方法,则创建 cosClient 时指定 region 为 new Region("") 即可
        List<Bucket> buckets = cosClient.listBuckets();
        return buckets;
    }

    /**
     * 删除存储桶
     * 功能说明
     * 删除指定账号下的空存储桶。
     * cosClient 客户端连接对象,桶名称
     * **/
    public static void deleteBucket(COSClient cosClient,String bucketName) throws CosClientException, CosServiceException{
        cosClient.deleteBucket(bucketName);
    };

    /**
     * 判断某个桶是否存在
     * cosClient 初始化桶
     * bucketName 桶名称
     * */
    public static Boolean getdoesBucketExist(COSClient cosClient,String bucketName){
        return cosClient.doesBucketExist(bucketName+"-"+APPID);
    }

    public static void main(String[] args) {
     /*   //1.获取桶连接
        final COSClient cosClient = cosBucketUtil.getCosClient();
        String buckentName="ee";
        //2.判断桶是否存在
        final Boolean aBoolean = cosBucketUtil.getdoesBucketExist(cosClient, buckentName);
        if (aBoolean){
            //查询桶列表
             List<Bucket> buckets = cosBucketUtil.listBuckets(cosClient);
            for (Bucket bucket : buckets) {
                System.out.println("桶名称"+bucket.getName());
                System.out.println("桶的地域"+bucket.getLocation());
            }
        }else {
            //新增桶
             Bucket bucket = cosBucketUtil.createBucket(cosClient, buckentName);

        }*/
        final COSClient cosClient = cosBucketUtil.getCosClient();
//删除桶
        cosBucketUtil.deleteBucket(cosClient,"ee-1311510668");
    }
}

cos对上传的操作

package com.baidu.util;

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.http.HttpProtocol;
import com.qcloud.cos.model.GetObjectRequest;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.UploadResult;
import com.qcloud.cos.region.Region;
import com.qcloud.cos.transfer.*;

import java.io.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static com.baidu.config.configuration.*;

//上传操作
public class teanstreUtil {

    /**
     * * 初始化CosClient相关配置, appid、accessKey、secretKey、region * @return
     */
    public static COSClient getCosClient() {
        // 1 初始化用户身份信息(secretId, secretKey)。
        // SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); // 不传APPID也可以,APPID和ACCESSKE已经关联过
        // 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
        // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
        //REGIONID地域
        ClientConfig clientConfig = new ClientConfig(new Region(REGIONID));
        // 这里建议设置使用 https 协议
        // 从 5.6.54 版本开始,默认使用了 https
        clientConfig.setHttpProtocol(HttpProtocol.https);
        //生成cos客户端
        COSClient cosclient = new COSClient(cred, clientConfig);
        return cosclient;
    }

    /** 创建 TransferManager 实例,这个实例用来后续调用高级接口
     * cosClient 初始化实例对象
     * **/
  public static   TransferManager createTransferManager(COSClient cosClient) {
        // 创建一个 COSClient 实例,这是访问 COS 服务的基础实例。
        // 详细代码参见本页: 简单操作 -> 创建 COSClient
        // 自定义线程池大小,建议在客户端与 COS 网络充足(例如使用腾讯云的 CVM,同地域上传 COS)的情况下,设置成16或32即可,可较充分的利用网络资源
        // 对于使用公网传输且网络带宽质量不高的情况,建议减小该值,避免因网速过慢,造成请求超时。
        ExecutorService threadPool = Executors.newFixedThreadPool(32);

        // 传入一个 threadpool, 若不传入线程池,默认 TransferManager 中会生成一个单线程的线程池。
        TransferManager transferManager = new TransferManager(cosClient, threadPool);

        // 设置高级接口的配置项
        // 分块上传阈值和分块大小分别为 5MB 和 1MB
        TransferManagerConfiguration transferManagerConfiguration = new TransferManagerConfiguration();
        transferManagerConfiguration.setMultipartUploadThreshold(5*1024*1024);
        transferManagerConfiguration.setMinimumUploadPartSize(1*1024*1024);
        transferManager.setConfiguration(transferManagerConfiguration);

        return transferManager;
    }
    /**
    *关闭 TransferManager
     * 在确定不再通过 TransferManager 的实例调用高级接口之后,一定要关闭这个实例,防止资源泄露。
    * ***/
    public static void shutdownTransferManager(TransferManager transferManager) {
        // 指定参数为 true, 则同时会关闭 transferManager 内部的 COSClient 实例。
        // 指定参数为 false, 则不会关闭 transferManager 内部的 COSClient 实例。
        transferManager.shutdownNow(Boolean.TRUE);
    }
    /**
     *
     * 文件上传
     *bucketName 桶名称 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
     * File 本地文件路径
     * key 对象键(Key)是对象在存储桶中的唯一标识。
     * */
    // 上传对象
    public static Upload upload(String bucketName,String key,String localFilePath) throws CosServiceException, CosClientException, InterruptedException {
        // 使用高级接口必须先保证本进程存在一个 TransferManager 实例,如果没有则创建
        final COSClient cosClient = teanstreUtil.getCosClient();
        // 详细代码参见本页:高级接口 -> 创建 TransferManager
        final TransferManager transferManager = teanstreUtil.createTransferManager(cosClient);
        File localFile = new File(localFilePath);
        //创建对象
        final PutObjectRequest putObjectRequest1 = new PutObjectRequest(bucketName, key, localFile);
        // 高级接口会返回一个异步结果Upload
            // 可同步地调用 waitForUploadResult 方法等待上传完成,成功返回UploadResult, 失败抛出异常
            Upload upload = transferManager.upload(putObjectRequest1);
            UploadResult uploadResult = upload.waitForUploadResult();
// 确定本进程不再使用 transferManager 实例之后,关闭之
// 详细代码参见本页:高级接口 -> 关闭 TransferManager
       teanstreUtil.shutdownTransferManager(transferManager);
        return upload;
    };
   /***
    * bucketName 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
    * String key上传的文件名称标识 唯一标识
    * 使用流的形式上传
    * */
    // 上传对象
    public static Upload uploads(String bucketName,String key,InputStream inputStream) throws CosServiceException, CosClientException{
        // 使用高级接口必须先保证本进程存在一个 TransferManager 实例,如果没有则创建
        final COSClient cosClient = teanstreUtil.getCosClient();
        // 详细代码参见本页:高级接口 -> 创建 TransferManager
        TransferManager transferManager = createTransferManager(cosClient);

        // 这里创建一个 ByteArrayInputStream 来作为示例,实际中这里应该是您要上传的 InputStream 类型的流


        ObjectMetadata objectMetadata = new ObjectMetadata();
// 上传的流如果能够获取准确的流长度,则推荐一定填写 content-length
// 如果确实没办法获取到,则下面这行可以省略,但同时高级接口也没办法使用分块上传了
    /*    objectMetadata.setContentLength(inputStreamLength);*/

        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, inputStream, objectMetadata);
        Upload upload=null;
        try {
            // 高级接口会返回一个异步结果Upload
            // 可同步地调用 waitForUploadResult 方法等待上传完成,成功返回UploadResult, 失败抛出异常
             upload = transferManager.upload(putObjectRequest);
            UploadResult uploadResult = upload.waitForUploadResult();
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        teanstreUtil.shutdownTransferManager(transferManager);

        return upload;
    };
//上传本地目录
    /**
     * bucketName // 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
     *virtualDirectoryKeyPrefix // 设置文件上传到 bucket 之后的前缀目录,设置为 “”,表示上传到 bucket 的根目录
     * directory 本地路径 // 要上传的文件夹的绝对路径
     * includeSubdirectories // 是否递归上传目录下的子目录,如果是 true,子目录下的文件也会上传,且cos上会保持目录结构
     * */
//TransferManager 实例封装了从本地一个目录来读取文件并且上传到 COS 的功能,这个功能可以在不破坏目录结构的情况下,将文件上传。同时,也可以指定将目录下的文件上传到另一个目录。
public static MultipleFileUpload uploadDirectory(String bucketName, String virtualDirectoryKeyPrefix,
                                          File directory, boolean includeSubdirectories){
    final COSClient cosClient = teanstreUtil.getCosClient();
    TransferManager transferManager = createTransferManager(cosClient);

    MultipleFileUpload upload=null;
    try {
        // 返回一个异步结果Upload, 可同步的调用waitForUploadResult等待upload结束, 成功返回UploadResult, 失败抛出异常.
         upload = transferManager.uploadDirectory(bucketName, virtualDirectoryKeyPrefix, directory, includeSubdirectories);
        // 或者阻塞等待完成
        upload.waitForCompletion();
    } catch (CosServiceException e) {
        e.printStackTrace();
    } catch (CosClientException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    teanstreUtil.shutdownTransferManager(transferManager);
    return upload;
};


    public static void main(String[] args) throws InterruptedException, FileNotFoundException {

teanstreUtil.uploadDirectory("ems-1311510668","preif",new File("D:\\text"),Boolean.TRUE);
    }


}

 cos下载对象操作

package com.baidu.util;

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.demo.BucketRefererDemo;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.COSObject;
import com.qcloud.cos.model.COSObjectInputStream;
import com.qcloud.cos.model.GetObjectRequest;
import com.qcloud.cos.region.Region;
import com.qcloud.cos.transfer.Download;
import com.qcloud.cos.transfer.MultipleFileDownload;
import com.qcloud.cos.transfer.TransferManager;
import com.qcloud.cos.utils.IOUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import static com.baidu.config.configuration.secretId;
import static com.baidu.config.configuration.*;
import static com.qcloud.cos.demo.BucketRefererDemo.cosClient;

public class cosDowbloadUtil {
    // 创建 COSClient 实例,这个实例用来后续调用请求
public static COSClient createCOSClient() {
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);

        // ClientConfig 中包含了后续请求 COS 的客户端设置:
        ClientConfig clientConfig = new ClientConfig();

        // 设置 bucket 的地域
        // COS_REGION 请参照 https://cloud.tencent.com/document/product/436/6224
        clientConfig.setRegion(new Region("ap-beijing"));

        // 设置请求协议, http 或者 https
        // 5.6.53 及更低的版本,建议设置使用 https 协议
        // 5.6.54 及更高版本,默认使用了 https
        clientConfig.setHttpProtocol(HttpProtocol.https);

        // 以下的设置,是可选的:

        // 设置 socket 读取超时,默认 30s
        clientConfig.setSocketTimeout(30*1000);
        // 设置建立连接超时,默认 30s
        clientConfig.setConnectionTimeout(30*1000);

        // 如果需要的话,设置 http 代理,ip 以及 port
      /*  clientConfig.setHttpProxyIp("httpProxyIp");
        clientConfig.setHttpProxyPort(80);*/
        // 生成 cos 客户端。
        return new COSClient(cred, clientConfig);
    }

    // 创建 TransferManager 实例,这个实例用来后续调用高级接口
public static TransferManager createTransferManager(){
      // 创建一个 COSClient 实例,这是访问 COS 服务的基础实例。
      // 详细代码参见本页: 简单操作 -> 创建 COSClient
     COSClient cosClient = cosDowbloadUtil.createCOSClient();
    // 自定义线程池大小,建议在客户端与 COS 网络充足(例如使用腾讯云的 CVM,同地域上传 COS)的情况下,设置成16或32即可,可较充分的利用网络资源
      // 对于使用公网传输且网络带宽质量不高的情况,建议减小该值,避免因网速过慢,造成请求超时。
      ExecutorService threadPool = Executors.newFixedThreadPool(32);
      // 传入一个 threadpool, 若不传入线程池,默认 TransferManager 中会生成一个单线程的线程池。
      TransferManager transferManager = new TransferManager(cosClient, threadPool);
      return transferManager;
  }

/*    // 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
    String bucketName = "examplebucket-1250000000";
    // 对象键(Key)是对象在存储桶中的唯一标识。详情请参见 [对象键](https://cloud.tencent.com/document/product/436/13324)
    String key = "exampleobject";*/
    public static Download download(String bucketName,String key,  String localFilePath){
        // 使用高级接口必须先保证本进程存在一个 TransferManager 实例,如果没有则创建
// 详细代码参见本页:高级接口 -> 创建 TransferManager
        final TransferManager transferManager = cosDowbloadUtil.createTransferManager();
        //本地存储路径
        File downloadFile = new File(localFilePath);
        Download download=null;
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
        try {
            // 返回一个异步结果 Donload, 可同步的调用 waitForCompletion 等待下载结束, 成功返回 void, 失败抛出异常
             download = transferManager.download(getObjectRequest, downloadFile);
            download.waitForCompletion();
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

// 确定本进程不再使用 transferManager 实例之后,关闭之
// 详细代码参见本页:高级接口 -> 关闭 TransferManager
        cosDowbloadUtil.shutdownTransferManager(transferManager);
        return download;
    };

   public static void shutdownTransferManager(TransferManager transferManager) {
        // 指定参数为 true, 则同时会关闭 transferManager 内部的 COSClient 实例。
        // 指定参数为 false, 则不会关闭 transferManager 内部的 COSClient 实例。
        transferManager.shutdownNow(true);
    }
    /**
     * 断点下载对象利用了分 range 多线程同时下载的方式下载对象,并在完成之后做完整性校验。如果下载过程中出现异常中断,重新下载时不会下载已经下载过的 range (源文件如果在重启前被修改,则会从头下载)。
     * 适合大文件下载。
     * */
    public static Download downloads(String bucketName,String key,String localFilePath,
                             boolean resumableDownload){
                            // 使用高级接口必须先保证本进程存在一个 TransferManager 实例,如果没有则创建
                            // 详细代码参见本页:高级接口 -> 创建 TransferManager
         TransferManager transferManager = cosDowbloadUtil.createTransferManager();
        File downloadFile = new File(localFilePath);
        Download download=null;
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
        try {
            // 返回一个异步结果 Donload, 可同步的调用 waitForCompletion 等待下载结束, 成功返回 void, 失败抛出异常
             download = transferManager.download(getObjectRequest, downloadFile, resumableDownload);
            download.waitForCompletion();
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        cosDowbloadUtil.shutdownTransferManager(transferManager);
        return download;
    };
    /**
     * 下载到目录
     * // 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
     *  @String bucketName = "examplebucket-1250000000";
     *         // 设置要下载的对象的前缀(相当于cos上的一个目录),如果设置成 "",则下载整个 bucket。
     *         String cos_path = "/prefix";
     *         // 要保存下载的文件的文件夹的绝对路径
     *         String dir_path = "/to/mydir";
     * */
    public static MultipleFileDownload downloadDirectory(String bucketName, String cos_path,String dir_path
                                                  ) {
// 使用高级接口必须先保证本进程存在一个 TransferManager 实例,如果没有则创建
// 详细代码参见本页:高级接口 -> 示例代码:创建 TransferManager
         TransferManager transferManager = cosDowbloadUtil.createTransferManager();
        MultipleFileDownload download=null;
        try {
            // 返回一个异步结果download, 可同步的调用waitForUploadResult等待download结束.
             download = transferManager.downloadDirectory(bucketName, cos_path, new File(dir_path));
            // 或者阻塞等待完成
            download.waitForCompletion();

            System.out.println("download directory done.");
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

// 确定本进程不再使用 transferManager 实例之后,关闭之
// 详细代码参见本页:高级接口 -> 示例代码:关闭 TransferManager
        cosDowbloadUtil.shutdownTransferManager(transferManager);
        return download;
    }


    public static void main(String[] args) {
        //cosDowbloadUtil.download("ems-1311510668","rizhi.png","D:\\360"+"\\"+"rizhi.png");
cosDowbloadUtil.downloadDirectory("ems-1311510668","/preif","D:\\360");
    }
    public static Boolean shangchuan(MultipartFile multipartFile){
       // multipartFile.transferTo(new File(realPath,aa.getOriginalFilename()));//文件上传
       return Boolean.TRUE;
    }

}

 列出cos对象

package com.baidu.util;

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.http.HttpProtocol;
import com.qcloud.cos.model.COSObjectSummary;
import com.qcloud.cos.model.ListObjectsRequest;
import com.qcloud.cos.model.ObjectListing;
import com.qcloud.cos.region.Region;

import java.util.List;

import static com.baidu.config.configuration.*;
/**
 * 列出当前对象**/
public class cosLikeUtil {
    // 创建 COSClient 实例,这个实例用来后续调用请求
  public static   COSClient createCOSClient() {
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);

        // ClientConfig 中包含了后续请求 COS 的客户端设置:
        ClientConfig clientConfig = new ClientConfig();

        // 设置 bucket 的地域
        // COS_REGION 请参照 https://cloud.tencent.com/document/product/436/6224
        clientConfig.setRegion(new Region(REGIONID));

        // 设置请求协议, http 或者 https
        // 5.6.53 及更低的版本,建议设置使用 https 协议
        // 5.6.54 及更高版本,默认使用了 https
        clientConfig.setHttpProtocol(HttpProtocol.https);

        // 以下的设置,是可选的:

        // 设置 socket 读取超时,默认 30s
        clientConfig.setSocketTimeout(30*1000);
        // 设置建立连接超时,默认 30s
        clientConfig.setConnectionTimeout(30*1000);

   /*     // 如果需要的话,设置 http 代理,ip 以及 port
        clientConfig.setHttpProxyIp("httpProxyIp");
        clientConfig.setHttpProxyPort(80);*/

        // 生成 cos 客户端。
        return new COSClient(cred, clientConfig);
    }

   /** // 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
    String bucketName = "examplebucket-1250000000";
    如果没有就穿空字符串 ""
    **/

    public static ObjectListing listObjects(String bucketName,String prefix) throws CosClientException, CosServiceException{
        // 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建
// 详细代码参见本页:简单操作 -> 创建 COSClient
         COSClient cosClient = cosLikeUtil.createCOSClient();

        ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
// 设置 bucket 名称
        listObjectsRequest.setBucketName(bucketName);
// 设置列出的对象名以 prefix 为前缀
        listObjectsRequest.setPrefix(prefix);
// 设置最大列出多少个对象, 一次 listobject 最大支持1000
        listObjectsRequest.setMaxKeys(1000);

// 保存列出的结果
        ObjectListing objectListing = null;

        try {
            objectListing = cosClient.listObjects(listObjectsRequest);
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        }
// 确认本进程不再使用 cosClient 实例之后,关闭之
        cosClient.shutdown();
        return objectListing;
    };

    public static void main(String[] args) {
        final ObjectListing objectListing = cosLikeUtil.listObjects("ems-1311510668", "");
        objectListing.getObjectSummaries().forEach(cosObjectSummary -> {
            // 对象的 key
            String key = cosObjectSummary.getKey();
            // 对象的etag
            String etag = cosObjectSummary.getETag();
            // 对象的长度
            long fileSize = cosObjectSummary.getSize();
            // 对象的存储类型
            String storageClasses = cosObjectSummary.getStorageClass();
            System.out.println(key);
            System.out.println(etag);
            System.out.println(fileSize);
            System.out.println(storageClasses);
        });

        if (objectListing.isTruncated()) {
            // 表示还没有列完,被截断了

            // 下一次开始的位置
            String nextMarker = objectListing.getNextMarker();
        }

    }
}

删除对象



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.exception.MultiObjectDeleteException;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.*;
import com.qcloud.cos.region.Region;

import java.util.ArrayList;
import java.util.List;

import static com.baidu.config.configuration.*;

public class cosDelectUtil {
    //创建 COSClient
    // 创建 COSClient 实例,这个实例用来后续调用请求
public static COSClient createCOSClient() {
        // 设置用户身份信息。
        // SECRETID 和 SECRETKEY 请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
        // ClientConfig 中包含了后续请求 COS 的客户端设置:
        ClientConfig clientConfig = new ClientConfig();
        // 设置 bucket 的地域
        // COS_REGION 请参照 https://cloud.tencent.com/document/product/436/6224
        clientConfig.setRegion(new Region(REGIONID));
        // 设置请求协议, http 或者 https
        // 5.6.53 及更低的版本,建议设置使用 https 协议
        // 5.6.54 及更高版本,默认使用了 https
        clientConfig.setHttpProtocol(HttpProtocol.https);
        // 以下的设置,是可选的:
        // 设置 socket 读取超时,默认 30s
        clientConfig.setSocketTimeout(30*1000);
        // 设置建立连接超时,默认 30s
        clientConfig.setConnectionTimeout(30*1000);
        // 如果需要的话,设置 http 代理,ip 以及 port
  /*      clientConfig.setHttpProxyIp("httpProxyIp");
        clientConfig.setHttpProxyPort(80);*/
        // 生成 cos 客户端。
        return new COSClient(cred, clientConfig);
    }
 //删除对象
    /***
     * @param bucketName 桶名称
     * @param key 文件名称
     * */
public static void deleteObject(String bucketName, String key) throws CosClientException, CosServiceException{
     // 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建
// 详细代码参见本页:简单操作 -> 创建 COSClient
     COSClient cosClient = cosDelectUtil.createCOSClient();
// 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
     String bucketNames = bucketName+"-"+APPID;
// 对象键(Key)是对象在存储桶中的唯一标识。详情请参见 [对象键](https://cloud.tencent.com/document/product/436/13324)
     try {
         cosClient.deleteObject(bucketNames, key);
     } catch (CosServiceException e) {
         e.printStackTrace();
     } catch (CosClientException e) {
         e.printStackTrace();
     }

// 确认本进程不再使用 cosClient 实例之后,关闭之
     cosClient.shutdown();
 }
//批量删除对象
public static DeleteObjectsResult deleteObjects(String bucketName,ArrayList<DeleteObjectsRequest.KeyVersion> list) throws MultiObjectDeleteException, CosClientException, CosServiceException{
    // 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建
// 详细代码参见本页:简单操作 -> 创建 COSClient
    COSClient cosClient = cosDelectUtil.createCOSClient();

// 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
    String bucketNames = bucketName+"-"+APPID;

    DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucketNames);
    deleteObjectsRequest.setKeys(list);
    DeleteObjectsResult deleteObjectsResult=null;
    try {
         deleteObjectsResult = cosClient.deleteObjects(deleteObjectsRequest);
        List<DeleteObjectsResult.DeletedObject> deleteObjectResultArray = deleteObjectsResult.getDeletedObjects();
    } catch (MultiObjectDeleteException mde) {
        // 如果部分删除成功部分失败, 返回 MultiObjectDeleteException
        List<DeleteObjectsResult.DeletedObject> deleteObjects = mde.getDeletedObjects();
        List<MultiObjectDeleteException.DeleteError> deleteErrors = mde.getErrors();
    } catch (CosServiceException e) {
        e.printStackTrace();
    } catch (CosClientException e) {
        e.printStackTrace();
    }
    // 确认本进程不再使用 cosClient 实例之后,关闭之
    cosClient.shutdown();
return  deleteObjectsResult;
}
//删除目录
    /***
     * @param bucketName 桶名称
     * @param delDir 目录名称
     * */
public static void delemkidr(String bucketName,String delDir){
// 列目录实现参考:列出对象 -> 简单操作 -> 列出目录下的对象和子目录
// 批量删除实现参考本页:批量删除对象
    final StringBuilder stringBuilder = new StringBuilder();
          stringBuilder.append(bucketName);
          stringBuilder.append("-");
          stringBuilder.append(APPID);
// 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建
// 详细代码参见本页:简单操作 -> 创建 COSClient
    COSClient cosClient = cosDelectUtil.createCOSClient();
    ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
// 设置 bucket 名称
    listObjectsRequest.setBucketName(stringBuilder.toString());
// prefix 表示列出的对象名以 prefix 为前缀
// 这里填要列出的目录的相对 bucket 的路径
    listObjectsRequest.setPrefix(delDir);
// 设置最大遍历出多少个对象, 一次 listobject 最大支持1000
    listObjectsRequest.setMaxKeys(1000);
// 保存每次列出的结果
    ObjectListing objectListing = null;
    do {
        try {
            objectListing = cosClient.listObjects(listObjectsRequest);
        } catch (CosServiceException e) {
            e.printStackTrace();
            return;
        } catch (CosClientException e) {
            e.printStackTrace();
            return;
        }

        // 这里保存列出的对象列表
        List<COSObjectSummary> cosObjectSummaries = objectListing.getObjectSummaries();

        ArrayList<DeleteObjectsRequest.KeyVersion> delObjects = new ArrayList<DeleteObjectsRequest.KeyVersion>();

        for (COSObjectSummary cosObjectSummary : cosObjectSummaries) {
            delObjects.add(new DeleteObjectsRequest.KeyVersion(cosObjectSummary.getKey()));
        }

        DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucketName);

        deleteObjectsRequest.setKeys(delObjects);

        try {
            DeleteObjectsResult deleteObjectsResult = cosClient.deleteObjects(deleteObjectsRequest);
            List<DeleteObjectsResult.DeletedObject> deleteObjectResultArray = deleteObjectsResult.getDeletedObjects();
        } catch (MultiObjectDeleteException mde) {
            // 如果部分删除成功部分失败, 返回 MultiObjectDeleteException
            List<DeleteObjectsResult.DeletedObject> deleteObjects = mde.getDeletedObjects();
            List<MultiObjectDeleteException.DeleteError> deleteErrors = mde.getErrors();
        } catch (CosServiceException e) {
            e.printStackTrace();
            return;
        } catch (CosClientException e) {
            e.printStackTrace();
            return;
        }

        // 标记下一次开始的位置
        String nextMarker = objectListing.getNextMarker();
        listObjectsRequest.setMarker(nextMarker);
    } while (objectListing.isTruncated());
    }
    public static void main(String[] args) {
    cosDelectUtil.delemkidr("ems","preif");

    }
}

到了这里,关于腾讯云存储COS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 腾讯云存储

    提示:以下是本篇文章正文内容,下面案例可供参考 在项目钟的图片以及文件需要归档存储。如果归档文件只保存到服务器某个目录里面,看似很简单,也容易管理。 但是将来我们的项目采用负载均衡架构之后,项目部署在多个服务器,那么A服务器无法读取B服务器上面存储

    2024年02月08日
    浏览(41)
  • 腾讯云存储COS

    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种

    2024年02月12日
    浏览(47)
  • 腾讯云对象存储功能的使用

    首先我们登录腾讯云搜索对象存储或者cos都可以 接下来新用户应该有免费额度,现在应该有活动一块钱50G/1年 到达这个界面 我们创建存储桶 这里不需要设置,看个人需求 然后,下一步创建即可 创建好之后   我们看它SDK文档或者API都可以(推荐SDK)  这里都有  我们以pyt

    2024年02月13日
    浏览(40)
  • 腾讯云COS存储是什么_腾讯云COS有什么用?

    由于这是给新手写的东西,就尽量整得简单易懂些吧。 作为国内第二大的云服务厂商,安全性,可靠性这些东西就不用过多做介绍了(这里并非说他绝对安全,而是比那些小平台的安全性高N个级别) 腾讯云COS与隔壁阿里云的OSS都是提供对象存储的服务,(即文件存储)。比

    2024年02月11日
    浏览(36)
  • 腾讯云存储产品全线升级,满足更多高性能存储场景

    数字经济时代,诞生了海量数据资源,促使数据存储技术也在不断推陈出新。12月1日,在2022腾讯全球数字生态大会存储专场上,腾讯云发布了多款云存储产品能力上新,并对分布式存储、高性能存储、日志大数据、云原生数据湖等产品的应用实践进行了分享,为广大企业实现

    2023年04月15日
    浏览(35)
  • “数据湖存储”冠军杯足球赛开幕,腾讯云存储出征!

    “数据湖存储”冠军杯是数据湖领域内的世界级赛事,随着云上“数据湖存储”产品理念的逐步普及,今年的比赛也获得了国内外众多球迷的关注。腾讯云以COS、GooseFS、GooseFSx、元数据加速器、COS加速器等球员组成的球队一路披荆斩棘,成为最闪耀的一颗星。 值得一提的是,

    2023年04月23日
    浏览(40)
  • 使用腾讯云对象存储搭建图床

    平常在学习一些东西或者研究一些东西的时候会整理一下然后发到博客网站上,然后编辑时候一般使用的都是markdown格式,然后图片的存储有时候就很闹心,开始用的公共图床,但是没几天不是图片失效了就是图床网站倒闭了,然后现在很多网站都加限制防外链的。就想着自

    2024年02月08日
    浏览(41)
  • 【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)

    文件系统最后都需要以一定的格式存储数据文件,常见的文件存储布局有行式存储、列式存储以及混合式存储三种,不同的类别各有其优缺点和适用的场景,在目前的大数据分析系统中,列式存储和混合式存储方案因其特殊优点被广泛采用 在传统关系型数据库中,行式存储被

    2024年02月16日
    浏览(55)
  • 上传图片到腾讯云对象存储桶cos 【腾讯云对象存储桶】【cos】【el-upload】【vue3】【上传头像】【删除】

    1、首先登录腾讯云官网控制台 进入对象存储页面 2、找到跨越访问CIRS设置 配置规则  点击添加规则  填写信息  3、书写代码 这里用VUE3书写 第一种用按钮出发事件形式 4、测试 点击选择文件 选择图片  等待结果   第二种用el-upload 也可以把el-upload嵌套button包装成这种形式

    2024年02月15日
    浏览(73)
  • 头歌Educoder云计算与大数据——实验五 Java API分布式存储

    原始电商数据都是存储在关系型数据库或 NoSQL 数据库上的,是面向OLTP(联机事务处理过程)的;数据都是面向业务的,而不是面向分析。因此数据比较复杂,表很多关联的数据是分散的,不利于统计分析;因此需要把数据从多个表里导出来、联合起来,找出分析所需要的数据项

    2023年04月09日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包