关于腾讯云对象储存cos的配置方法简单说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于腾讯云对象储存cos的配置方法简单说明相关的知识,希望对你有一定的参考价值。

参考技术A 前言:
COS是腾讯云提供的对象存储服务,功能非常强大,可以作为文件服务器,CDN加速,静态网页服务,还提供了图片的常用操作。相关API文档: https://cloud.tencent.com/document/product/436/7751

1.申请腾讯云对象储存,免费没个月有10G流量,如果网站流量大,可付费购买
2.点击创建存储桶,如图

3.创建注意事项,如图

6.如果需要不同尺寸的缩略图则需要启用腾讯云的数据万象功能,如图

文档官方说明
https://cloud.tencent.com/document/product/460/6929
8.网站本身配置(pos为列子)

1.借助koa2建立的服务端项目
的app.js

2.借助express的框架的服务端项目

说白了借助node运行平台以及express或者koa2的web服务器框架,写前端的请求接口,提供前端去发起文件上下传的请求

腾讯云COS,上传,下载,删除,在线查看等操作

研究了下文档,学会的先记录下。

首先新建工具类COSUtil。

配置账号密码、存储桶以生成客户端(每个方法下都需要配置,为了代码简洁后面的方法会省略):

1         String secretId = "root";                                   //初始化用户身份信息(secretId, secretKey)。
2         String secretKey = "123456;   
3         String bucketName = "test-1250000000";                          //初始化存储桶
4 
5         COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
6         Region region = new Region("ap-shanghai");                         //设置 bucket 的区域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
7         ClientConfig clientConfig = new ClientConfig(region);                    //clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
8         COSClient cosClient = new COSClient(cred, clientConfig);                 //生成 cos 客户端。

 

文件上传:

        public static String upload(File file) {
            if(file==null){      //判断文件是否为空
                return null;
            }
           try {
               // 指定要上传到 COS 上对象键,对象键其实就是该文件存储在腾讯云的文件路径和文件名,如:"file/test.log"。
               String key = "file/test.log";
               System.out.println(key);
               PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, file);
               PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
               return key;
               //String etag = putObjectResult.getETag();  // 获取文件的 etag
          } catch (CosServiceException serverException) {
              serverException.printStackTrace();
          } catch (CosClientException clientException) {
              clientException.printStackTrace();
          }
          return "";
      }

 

 

文件下载(流):

  //传入key以获取文件下载流
  public static COSObjectInputStream download(String key){ GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);//根据桶和key获取文件请求 System.out.println("文件请求:"+getObjectRequest); COSObject cosObject = cosClient.getObject(getObjectRequest); COSObjectInputStream cosObjectInput = cosObject.getObjectContent(); System.out.println("输出流:"+cosObjectInput); return cosObjectInput; }

 

文件下载(实体):

   
//根据key下载文件实体 public static ObjectMetadata download1(String key){
     File downFile = new File("d:/1111.pdf"); //自定义下载文件路径或直接填key GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key); ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile); //返回文件的属性 ObjectMetadata,包含文件的自定义头和 content-type 等属性。 return downObjectMeta; }

 

获取文件临时url:

    public static String generatePresignedUrl(String key){                  //若要用此url查看在线文件,key必须以".png",".pdf"等后缀结尾   2020-01-04 12:02:47
        Date expirationTime = new Date(System.currentTimeMillis() + 30L * 60L * 1000L); //半小时后过期
        System.out.println("expiratioin"+expirationTime.toString());
        URL url = cosClient.generatePresignedUrl(bucketName, key, expirationTime);      //获取url地址
        System.out.println(url);
        return url.toString();
    }

 

在控制台打印文件信息(以下代码打印了全部):

    public static void showAllFile(){
        // Bucket的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式
        //String bucketName = "examplebucket-1250000000";
        ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
        // 设置bucket名称
        listObjectsRequest.setBucketName(bucketName);
        // prefix表示列出的object的key以prefix开始
        listObjectsRequest.setPrefix("");
        // deliter表示分隔符, 设置为/表示列出当前目录下的object, 设置为空表示列出所有的object
        listObjectsRequest.setDelimiter("");
        // 设置最大遍历出多少个对象, 一次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;
            }
            // common prefix表示表示被delimiter截断的路径, 如delimter设置为/, common prefix则表示所有子目录的路径
            List<String> commonPrefixs = objectListing.getCommonPrefixes();

            // object summary表示所有列出的object列表
            List<COSObjectSummary> cosObjectSummaries = objectListing.getObjectSummaries();
            for (COSObjectSummary cosObjectSummary : cosObjectSummaries) {
                // 文件的路径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:"+etag); System.out.println("文件大小:"+fileSize); System.out.println("类型:"+storageClasses); System.out.println(); } String nextMarker = objectListing.getNextMarker(); listObjectsRequest.setMarker(nextMarker); } while (objectListing.isTruncated()); }

 

删除文件(单个):

    //删除文件
    public static void deleteObject(String key){
        cosClient.deleteObject(bucketName, key);
    }

 

删除文件(批量):

    /**
     * 删除文件(批量)
     * @param keyList //要删除文件的key表
     */
    public static void deleteObjects(List<DeleteObjectsRequest.KeyVersion> keyList){
        keyList.add(new KeyVersion("project/folder1/picture.jpg"));
        keyList.add(new KeyVersion("project/folder2/text.txt"));
        keyList.add(new KeyVersion("project/folder2/music.mp3"));
        DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucketName);
        deleteObjectsRequest.setKeys(keyList);
        // 批量删除文件
        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) { // 如果是其他错误,例如参数错误, 身份验证不过等会抛出 CosServiceException
            e.printStackTrace();
        } catch (CosClientException e) { // 如果是客户端错误,例如连接不上COS
            e.printStackTrace();
        }
    }

 

暂时就先写这点了。2019-12-24 15:51:41

以上是关于关于腾讯云对象储存cos的配置方法简单说明的主要内容,如果未能解决你的问题,请参考以下文章

腾讯云COS对象存储的简单使用

ThinkPHP6上传图片七牛云 如何上传文件到七牛云对象储存cos

腾讯云COS,上传,下载,删除,在线查看等操作

Typora编辑器配置腾讯云图床

Typora编辑器配置腾讯云图床

腾讯云 储存配置