首页 > 其他分享 >腾讯云对象存储工具类和demo

腾讯云对象存储工具类和demo

时间:2022-09-26 23:33:49浏览次数:47  
标签:存储 String demo CosUtil cos private static 腾讯 com

使用

package com.ruoyi;
import java.io.File;
public class mytest {
    private static String secretId = "AKID2oPDo111111111111dMp53mHfoYZGw";
    private static String secretKey = "e6JTP5e222222222222GvhHYBl7C5g05";
    private static String bucketName = "mht-12566666666";
    private static String regionStr = "ap-beijing";
    private static String domain = "https://mht-12566666666.cos.ap-beijing.myqcloud.com";

    public static void main(String[] args) {
        CosUtil cosUtil = new CosUtil(secretId, secretKey, bucketName, regionStr, 30L * 60L, domain);
        File file = new File("C:\\Users\\13301\\Desktop\\微信截图_20220926222441.png");
        Boolean put = cosUtil.put("20220926222441.png", file);
        System.out.println(put ? "上传成功" : "上传失败");
        //获取带签名的有有效期的图片链接,如果存储桶的权限为私有读,那么必须使用这个链接才能直接访问图片
        String sourceUrl = cosUtil.getSourceUrl("20220926222441.png");
        System.out.println(sourceUrl);
        //获取不带签名的图片链接,只有存储桶的权限为公有读,才可以直接使用这个链接访问图片
        String linkUrl = cosUtil.getLinkUrl("20220926222441.png");
        System.out.println(linkUrl);
    }
}

结果

上传成功

https://mht-12566666666.cos.ap-beijing.myqcloud.com/20220926222441.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKID2oPDoCYwmM0sb9nREwPdMp53mHfoYZGw%26q-sign-time%3D1664205380%3B1664207180%26q-key-time%3D1664205380%3B1664207180%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D260170f52383e7e8ff2af5ece1edd03809ea0cc6

https://mht-12566666666.cos.ap-beijing.myqcloud.com/20220926222441.png

引入依赖

        <!-- 腾讯云对象存储 SDK -->
        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>5.6.105</version>
        </dependency>

工具类

package com.ruoyi;


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.http.HttpMethodName;
import com.qcloud.cos.model.GeneratePresignedUrlRequest;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.region.Region;

import java.io.File;
import java.util.Date;

/**
 * 腾讯云对象存储工具类
 *
 * @author DaenMax
 */
public class CosUtil {
    private static String secretId;
    private static String secretKey;
    private static String bucketName;
    private static String regionStr;
    private static COSClient client;
    private static Long expireTime;
    private static String domain;

    /**
     * @param secretId
     * @param secretKey
     * @param bucketName 存储桶名
     * @param regionStr  所属地域,例如 ap-beijing
     * @param expireTime 带有sign的图片链接的有效期,单位秒数
     * @param domain     访问域名,例如 https://mht-1266634666.cos.ap-beijing.myqcloud.com
     */
    public CosUtil(String secretId, String secretKey, String bucketName, String regionStr, Long expireTime, String domain) {
        CosUtil.secretId = secretId;
        CosUtil.secretKey = secretKey;
        CosUtil.bucketName = bucketName;
        CosUtil.regionStr = regionStr;
        CosUtil.expireTime = expireTime;
        CosUtil.domain = domain;
        COSCredentials cred = new BasicCOSCredentials(CosUtil.secretId, CosUtil.secretKey);
        Region region = new Region(CosUtil.regionStr);
        ClientConfig clientConfig = new ClientConfig(region);
        client = new COSClient(cred, clientConfig);
    }

    /**
     * 上传文件到服务器 如果key重复将被覆盖
     */
    public Boolean put(String key, File file) {
        try {
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, file);
            client.putObject(putObjectRequest);
        } catch (Exception e) {
            return false;
        }
        return true;
    }

    /**
     * 获取带权限的下载链接
     */
    public String getSourceUrl(String key) {
        GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, key, HttpMethodName.GET);
        // 设置签名过期时间(可选), 若未进行设置, 则默认使用 ClientConfig 中的签名过期时间(1小时)
        Date expirationDate = new Date(System.currentTimeMillis() + expireTime * 1000L);
        req.setExpiration(expirationDate);
        return client.generatePresignedUrl(req).toString();
    }

    /**
     * 获取不带权限的下载链接
     */
    public String getLinkUrl(String key) {
        return CosUtil.domain + "/" + key;
    }

}

标签:存储,String,demo,CosUtil,cos,private,static,腾讯,com
From: https://www.cnblogs.com/daen/p/16732975.html

相关文章

  • 手把手教你连接腾讯云linux的mysql数据库
    我的腾讯云linux服务器操作系统是CentOS7.6,mySql数据库是5.7。做为学习服务器在上面安装了mysql数据库用于自己的学习和产品展示。目录:1.安装环境检查2.安装mysql5.73......
  • 数据库的存储结构
    文件的分页DBMS最常见的做法是将数据库以文件的形式存储在磁盘上。有些DBMS可能使用一组文件来存储数据库,有些DBMS可能只使用单个文件。从操作系统的角度来看,一个文件就......
  • Oracle存储过程中,调用另外一个存储过程打印日志
    最近在项目中维护一个三方写的老破旧项目,居然在项目中大量用存储过程书写逻辑,在维护过程中不停的要去查看阅读对方写的存储过程是一个什么逻辑,使用DataGrip的断点功能尝试......
  • mysql 存储过程
    根据查询条件动态拼接表名#测试数据createtabletemp1(idint,namevarchar(50));createtabletemp2(idint,namevarchar(50));insertintotemp2values(2,'......
  • 什么是块存储、文件存储、对象存储?
    块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-basedStorage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-basedStorag......
  • LeetCode腾讯精选50题 -- 三数之和
    题目:  分析:由题意,很容易看出可以三层循环,但是时间复杂度就为O(n^3)很容易运行超时,想办法进行简化(1)排序  要求三数相加为0 ,要是排序之后的数据都为正数,则必然不......
  • CAP事件总线在NetCore中的应用+MySql存储队列信息
    上一篇链接:https://www.cnblogs.com/fei686868/p/16721769.html在上一篇中,我们介绍了CAP基于内存存储的应用。本篇我们介绍下,把存储做到mysql中,队列还是使用内存队列。my......
  • 顺序存储二叉树
    简介从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组特点顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为......
  • mysql存储引擎
    MySQL存储引擎概述MySQL5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中Inno......
  • mysql存储过程
    MySQLmysql存储过程概述存储过程是存储在数据库的一组SQL语句集,用户可以通过存储过程名和传参多次调用的程序模块。特点:使用灵活,可以使用流控制语句,自定义变量等完......