腾讯云COS桶文件上传下载工具类

在这里插入图片描述

1,申请key和密钥

2,引入依赖

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

3,工具类

package com.example.activity.utils;import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
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.model.GeneratePresignedUrlRequest;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.region.Region;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;public class TencentCOSUtils {/*** COS SECRETID*/private static String SECRETID = "ebOzOp8NafZL2ZxKX";/*** COS SECRETKEY*/private static String SECRETKEY = "WBhz59DF";/*** COS BUCKETNAME bucket的命名规则为{name}-{appid} ,存储桶名称必须为此格式*/private static String BUCKETNAME = "i959430";private static String filePathPrefix = "/jo";private static String region = "ou";public static void main(String[] args) throws FileNotFoundException {File file = new File("G:\\Download\\aa.jpg");Map<String, String> upload = upload(file);System.out.println(JSONUtil.toJsonStr(upload));}/**** 上传文件* @param file* @return*/public static Map<String, String> upload(File file) {COSClient cosClient = null;FileInputStream fileInputStream = null;Map<String, String> result = new HashMap<>();try {fileInputStream = new FileInputStream(file);//获取最后一个.的位置int lastIndexOf = file.getName().lastIndexOf(".");//获取文件的后缀名 .jpgString suffix = file.getName().substring(lastIndexOf);String filename = filePathPrefix + "/" + DateUtil.format(new Date(), "yyyyMMdd") + "/" + System.currentTimeMillis() + suffix;// 1 初始化用户身份信息(secretId, secretKey)。COSCredentials cred = new BasicCOSCredentials(SECRETID, SECRETKEY);// 2 设置bucket的区域, COS地域的简称请参照// https://cloud.tencent.com/document/product/436/6224// clientConfig中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者接口文档 FAQ中说明。ClientConfig clientConfig = new ClientConfig(new Region(region));// 3 生成 cos 客户端。cosClient = new COSClient(cred, clientConfig);// 指定要上传到的存储桶,指定要上传到 COS 上对象键ObjectMetadata objectMetadata = new ObjectMetadata();PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKETNAME, filename, fileInputStream, objectMetadata);cosClient.putObject(putObjectRequest);result.put("fileName", filename);result.put("absolutePath", getAbsolutePath(filename));} catch (Exception e) {e.printStackTrace();} finally {if (cosClient != null) {// 关闭客户端(关闭后台线程)cosClient.shutdown();}if (fileInputStream != null) {try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}}return result;}/*** 下载文件** @param fileName COS桶的文件路径* @param  outPath 输出路径*/public static void downFile(String fileName, String outPath) {COSCredentials cred = new BasicCOSCredentials(SECRETID, SECRETKEY);ClientConfig clientConfig = new ClientConfig(new Region(region));COSClient cosClient = new COSClient(cred, clientConfig);GetObjectRequest getObjectRequest = new GetObjectRequest(BUCKETNAME, fileName);ObjectMetadata object = cosClient.getObject(getObjectRequest, new File(outPath + "/" + fileName));System.out.println(object);}// 删除文件public static void delete(String filename) {COSClient cosClient = null;try {// 1 初始化用户身份信息(secretId, secretKey)。COSCredentials cred = new BasicCOSCredentials(SECRETID, SECRETKEY);// 2 设置bucket的区域, COS地域的简称请参照// https://cloud.tencent.com/document/product/436/6224// clientConfig中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者接口文档 FAQ// 中说明。ClientConfig clientConfig = new ClientConfig(new Region(region));// 3 生成 cos 客户端。cosClient = new COSClient(cred, clientConfig);cosClient.deleteObject(BUCKETNAME, filename);} finally {if (cosClient != null) {// 关闭客户端(关闭后台线程)cosClient.shutdown();}}}/**** 获取文件的绝对路径* @param fileName 文件名称* @return url*/public static String getAbsolutePath(String fileName) {// 1 初始化用户身份信息(secretId, secretKey)COSCredentials cred = new BasicCOSCredentials(SECRETID, SECRETKEY);// 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224// clientConfig中包含了设置region, https(默认http), 超时, 代理等set方法, 使用可参见源码或者接口文档FAQ中说明ClientConfig clientConfig = new ClientConfig(new Region(region));// 3 生成cos客户端COSClient cosclient = new COSClient(cred, clientConfig);// 设置URL过期时间为1小时 60*60*1000()Date expiration = new Date(System.currentTimeMillis() + 60 * 60 * 1000);GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(BUCKETNAME, fileName);// 设置签名过期时间(可选), 若未进行设置, 则默认使用 ClientConfig 中的签名过期时间(5分钟)generatePresignedUrlRequest.setExpiration(expiration);String url = cosclient.generatePresignedUrl(generatePresignedUrlRequest).toString();return url;}}

4,注意事项

1,SECRETID和SECRETKEY 需要有读写权限
2,获取的文件地址有时间限制,过期后需要重新获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/343004.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python包管理工具:pipenv的基本使用

很多语言都提供了环境隔离的支持&#xff0c;例如nodejs的node_module&#xff0c;golang的go mod&#xff0c;python也有virtualenv和pyvenv等机制。 为了建立依赖快照&#xff0c;通常会用pip freeze > requirements.txt 命令生成一个requirements.txt文件&#xff0c;在…

手敲Mybatis(16章)-一级缓存功能实现

1.实现目的 这一节的目的主要是实现SqlSession级别的缓存&#xff0c;也就是一级缓存&#xff0c;首先看下图一&#xff0c;用户可以通过设置来进行是否开启一级缓存&#xff0c;不设置的化默认开启一级缓存&#xff0c;localCacheScopeSESSION为要设置一级缓存&#xff0c;lo…

Android开发基础(二)

Android开发基础&#xff08;二&#xff09; 上篇主要描述了Android系统架构&#xff0c;代码是通过Java表示的&#xff1b; 本篇将从介绍Android组件去理解Android开发&#xff0c;代码将对Java和Kotlin进行对比。 Android组件 Android应用程序由一些零散的有联系的组件组成…

JS-DOM树和DOM对象

作用和分类 作用&#xff1a;就是使用JS去操作html和浏览器 分类&#xff1a;DOM&#xff08;文档对象模型&#xff09;、BOM&#xff08;浏览器对象模型&#xff09; 什么是DOM DOM&#xff08;Document Object Model--文档对象模型&#xff09;是用来呈现以及与任意HTML或…

Python商业数据挖掘实战——爬取网页并将其转为Markdown

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言前言正则表达式进行转换送书活动 前言 在信息爆炸的时代&#xff0c;互联网上的海量文字信息如同无尽的沙滩。然而&#xff0c;其中真正有价值的信息往往埋…

在 The Sandbox 见证元宇宙新地标:Playboy 推出 MetaMansion 特别预览

元宇宙诞生了新地标&#xff01;The Sandbox 联手 Playboy推出 MetaMansion&#xff0c;重新演绎了传说级别的现实版 Playboy Mansion&#xff0c;你可以在 The Sandbox 中一睹它的风采。 今天&#xff0c;Playboy 公布了 MetaMansion 的首次预览&#xff0c;用虚拟方式呈现了 …

Postgresql常见(花式)操作完全示例

案例说明 将Excel数据导入Postgresql&#xff0c;并实现常见统计&#xff08;数据示例如下&#xff09; 导入Excel数据到数据库 使用Navicat工具连接数据库&#xff0c;使用导入功能可直接导入&#xff0c;此处不做过多介绍&#xff0c;详细操作请看下图&#xff1a; 点击“下…

直播带货2024:洗牌、阵痛和暗流涌动

文 | 螳螂观察 作者 | 青月 一天前&#xff0c;大学生齐夏根本不会在直播间购买《额尔古纳河右岸》这种书籍。 她是喜欢看小说&#xff0c;但只钟爱悬疑无限流题材&#xff0c;至于《额尔古纳河右岸》这种讲述一个弱小民族顽强的抗争和优美的爱情的长篇小说&#xff0c;用齐…

训练营第四十二天 | 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集

01背包问题 二维 代码随想录 dp二维数组 优化 01背包问题 一维 代码随想录 dp一维数组 416. 分割等和子集 把数组分成总和相等的两份&#xff0c;如果数组总和为奇数&#xff0c;不能分割&#xff0c;若有符合的数组子集&#xff0c;返回true 代码随想录 class Solution {p…

Nginx服务配置文件

在Nginx服务器的主配置文件/usr/local/nginx/conf/nginx.conf 中&#xff0c;包括全局配置、I/O事件配置 和HTTP配置这三大块内容&#xff0c;配置语句的格式为“关键字 值&#xff1a;”&#xff08;末尾以分号表示结束&#xff09;&#xff0c;以“#” 开始的部分表示注释。 …

Swoft - Bean

一、Bean 在 Swoft 中&#xff0c;一个 Bean 就是一个类的一个对象实例。 它(Bean)是通过容器来存放和管理整个生命周期的。 最直观的感受就是省去了频繁new的过程&#xff0c;节省了资源的开销。 二、Bean的使用 1、创建Bean 在【gateway/app/Http/Controller】下新建一个名为…

springIoc依赖注入循环依赖三级缓存

springIoc的理解&#xff0c;原理和实现 控制反转&#xff1a; 理论思想&#xff0c;原来的对象是由使用者来进行控制&#xff0c;有了spring之后&#xff0c;可以把整个对象交给spring来帮我们进行管理 依赖注入DI&#xff1a; 依赖注入&#xff0c;把对应的属性的值注入到…