腾讯云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.rhkb.cn/news/237664.html

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

相关文章

【学习iOS高质量开发】——熟悉Objective-C

文章目录 一、Objective-C的起源1.OC和其它面向对象语言2.OC和C语言3.要点 二、在类的头文件中尽量少引用其他头文件1.OC的文件2.向前声明的好处3.如何正确引入头文件4.要点 三、多用字面量语法&#xff0c;少用与之等价的方法1.何为字面量语法2.字面数值3.字面量数组4.字面量字…

QT上位机开发(进度条操作)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 进度条是一个比较常见的控件。如果某个操作需要很长的时间才能完成&#xff0c;那么这个时候最好有一个进度条提示&#xff0c;这样比较容易平复一…

CPT203-Software Engineering 笔记

Week 1 -- Introduction failure reason professional software development*** maintain, security, efficiency, acceptability two kinds***: generic, customized software deterioration 软件退化 reduce changes/ side effects after changes software engineering …

前端重置密码报错记录

昨天晚上&#xff0c;我写了重置密码的前端&#xff0c;测试的时候报错 今天上午&#xff0c;我继续试图解决这个问题&#xff0c;我仔细检查了一遍&#xff0c;前端没有问题 可以正常接收输入的数据并且提交 但是后端接收到的数据为空&#xff0c;后端接口也没有问题 但后端收…

Java SE入门及基础(12)

do-while 循环 1. 语法 do { //循环操作 } while ( 循环条件 ); 2. 执行流程图 3. 案例 从控制台录入学生的成绩并计算总成绩&#xff0c;输入0 时退出 4. 代码实现 public static void main ( String [] args ) { Scanner sc new Scanner ( System . in )…

【IDEA】瑞_IDEA模版注释设置_IDEA自动生成注释模版(详细图文步骤)

文章目录 1 概要2 类的自定义模版注释3 自定义模版注释3.1 方法的自定义模版注释3.2 属性的自定义模版注释 &#x1f64a; 前言&#xff1a;在Java开发中&#xff0c;注释具有不可或缺的重要性&#xff0c;注释负责解释代码&#xff0c;能帮助开发人员深入理解代码的逻辑和功能…

Vue2:通过ref获取DOM元素

一、场景描述 我们在页面的开发过程中&#xff0c;经常需要操作dom元素&#xff0c;来实现我们需要的效果。 以往js中&#xff0c;我们是通过给dom添加id&#xff0c;然后&#xff0c;通过js代码document来获取这个dom 简写代码案例&#xff1a; <h2 id"test"&…

Flutter之运行错误:this and base files have different roots

运行时报错&#xff1a; this and base files have different roots: E:\Demolpro\waqu\build\flutter-plugin-_android_lifecycle and C:\Users\78535\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_pulgin_android_lifecycle-2.0.17\android 如图&#xff1a; 这种情况…

Java多线程并发篇----第十三篇

系列文章目录 文章目录 系列文章目录前言一、Semaphore 信号量二、Semaphore 与 ReentrantLock 区别三、可重入锁(递归锁)四、公平锁与非公平锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

力扣每日一练(24-1-13)

如果用列表生成式&#xff0c;可以满足输出的型式&#xff0c;但是不满足题意&#xff1a; nums[:] [i for i in nums if i ! val]return len(nums) 题意要求是&#xff1a; 你需要原地修改数组&#xff0c;并且只使用O(1)的额外空间。这意味着我们不能创建新的列表&#xff…

Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

文章目录 什么是 Consul?安装和运行 ConsulAsp .Net Core 如何集成 Consul 实现服务注册和健康检查Consul.AspNetCore 中的 AddConsul 和 AddConsulServiceRegistration 方法 究竟做了什么&#xff1f;AddConsul 方法AddConsulServiceRegistration 方法 配置 Consul 检查服务封…

PyTorch损失函数

一、损失函数是什么 损失函数&#xff1a;衡量模型输出与真实标签的差异 class _Loss(Module):def __init__(self, size_averageNone, reduceNone, reductionmean):"""Loss函数的基类&#xff0c;定义了一些通用的属性和方法。参数&#xff1a;- size_average…

QuEra 10,000个物理量子位和100个逻辑量子位的量子计算机2026

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

FineBI实战项目一(19):每小时订单笔数分析开发

点击新建组件&#xff0c;创建下每小时订单笔数组件。 选择饼图&#xff0c;拖拽cnt&#xff08;总数&#xff09;到角度&#xff0c;拖拽hourstr到颜色&#xff0c;调节内径。 修改现在的文字 拖拽组件到仪表盘。 效果如下&#xff1a;

泊松流生成模型简介

一、说明 泊松流生成模型 (PFGM) 是一种新型的生成深度学习模型&#xff0c;与扩散模型类似&#xff0c;其灵感来自物理学。在这本简单易懂的指南中了解 PFGM 背后的理论以及如何使用它们生成图像。 生成式人工智能模型在过去几年中取得了长足的进步。受物理启发的扩散…

element表格数据,表头上(下)角标,html字符串渲染

1. 问题描述 在动态渲染的element表格中&#xff0c;表头和表中数据是一个含有html的字符串&#xff0c;需要渲染 2. 效果 3. 代码 const columns ref([{ text: 差值<sub>-3</sub> / 10<sup>-6</sup>℃<sup>-1</sup>, value: aallowEr…

uniapp怎么开发插件并发布

今天耳机坏了,暂时内卷不了,所以想开发几个插件玩玩,也好久没写博客了,就拿这个来写了 首先,发布插件时需要你有项目 这里先拿uniapp创建一个项目, 如下,创建好的项目长这样 然后根据uniapp官网上说的,我们发布插件时,需要在uni_modules里面编写和发布 ps:还需要使用uniapp…

Redis 内存淘汰策略有哪些?过期数据如何删除?

Redis 在面试中出现的概率非常大&#xff0c;毕竟后端项目如果用到分布式缓存的话&#xff0c;一般用的都是 Redis。目前&#xff0c;还没有出现一个能够取代 Redis 的分布式缓存解决方案。 这篇文章中&#xff0c;我会分享几道 Redis 内存管理相关的问题&#xff0c;都很常见…

(分享) 音乐软件Spotify-声破天8.9.4

​【应用名称】&#xff1a;Spotify-声破天 ​【适用平台】&#xff1a;#Android ​【软件标签】&#xff1a;#Spotify ​【应用版本】&#xff1a;8.8.96 → 8.9.4 ​【应用大小】&#xff1a;67MB ​【软件说明】&#xff1a;软件升级更新。iOS可配合qx小火箭类的工具对…

什么类型的企业需要工单系统?适用场景与优势分析

在现代商业中&#xff0c;必须高效地管理与跟踪大量任务和工作流程。对一些企业而言&#xff0c;处理很多订单是一项具有挑战性的任务。此订单可能来自客户需求、内部问题反馈或各种业务流程中的任务分配。可是&#xff0c;如果没有好的解决方法&#xff0c;这类订单可能会致使…