1、项目添加cos-api包:
<dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.75</version>
</dependency>

2、CosUtils类

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.HttpProtocol;
import com.qcloud.cos.model.*;
import com.qcloud.cos.region.Region;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.net.URL;/*** @author ztl*/
@Slf4j
public class CosUtils {private static COSClient sCosClient;private CosUtils() {}/*** 初始化CosClient实例,在Springboot初始化执行一次,可以保证COSClient实例只有一个*/public static void initCosClient() {// 1 初始化String secretId = COSConfig.Tencent_secretId;String secretKey = COSConfig.Tencent_secretKey;COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);// 2 设置 bucketRegion region = new Region(COSConfig.Tencent_region);ClientConfig clientConfig = new ClientConfig(region);// 这里建议设置使用 https 协议clientConfig.setHttpProtocol(HttpProtocol.https);// 3 生成 cos 客户端。sCosClient = new COSClient(cred, clientConfig);}/*** COSClient实例获取** @return cosclient*/public static COSClient getCosClient() {initCosClient();return sCosClient;}/*** 上传文件** @param file       MultipartFile类型的文件* @param bucketName 存储桶名称* @param key        文件路径及文件名称的组合*                   指定文件上传到 COS 上的路径* @return URL对象,在该对象中有很多方法,其中获取 url 链接的方法是:getContent()* @throws IOException*/public static URL uploadFile(MultipartFile file, String bucketName, String key) throws IOException {// 指定要上传的文件,这里使用 流类型,不使用文件类型int inputStreamLength = file.getBytes().length;InputStream inputStream = file.getInputStream();// 数据流类型需要额外定义一个参数ObjectMetadata objectMetadata = new ObjectMetadata();// 上传的流如果能够获取准确的流长度,则推荐一定填写 content-length// 如果确实没办法获取到,则下面这行可以省略,但同时高级接口也没办法使用分块上传了objectMetadata.setContentLength(inputStreamLength);// 指定文件上传到 COS 上的路径,即对象键。例如对象键为folder/picture.jpg,则表示将文件 picture.jpg 上传到 folder 路径下// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, inputStream, objectMetadata);PutObjectResult putObjectResult = sCosClient.putObject(putObjectRequest);System.out.println(putObjectResult.getRequestId());return getURL(bucketName, key);}public static String uploadFile(String fileName, InputStream inputStream) {URL url = uploadFile(fileName, inputStream, false);if (ObjectUtils.isEmpty(url) || StringUtils.isEmpty(url.getFile())) {return "";}return COSConfig.Tencent_domain + url.getFile();}public static URL uploadFile(String fileName, InputStream inputStream,boolean shouldCloseStream) {log.info("cos uploadFile start;fileName:{}",fileName);// 数据流类型需要额外定义一个参数ObjectMetadata objectMetadata = new ObjectMetadata();// 上传的流如果能够获取准确的流长度,则推荐一定填写 content-length// 指定文件上传到 COS 上的路径,即对象键。// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);PutObjectRequest putObjectRequest = new PutObjectRequest(COSConfig.Tencent_bucketName, fileName, inputStream, objectMetadata);PutObjectResult putObjectResult = sCosClient.putObject(putObjectRequest);log.info("cos uploadFile putObjectResult requestId:{}",putObjectResult.getRequestId());if (shouldCloseStream) {try {inputStream.close();} catch (Exception e) {log.warn("error while closing stream", e);}}log.info("cos uploadFile end requestId:{},fileName:{}",putObjectResult.getRequestId(),fileName);return getURL(COSConfig.Tencent_bucketName, fileName);}/*** 重写方法,参入参数中没有bucketName,表示默认使用application.yml配置文件中的 bucketName** @param file MultipartFile类型的文件* @param key  文件路径及文件名称的组合*             指定文件上传到 COS 上的路径,即对象键。例如对象键为folder/picture.jpg,则表示将文件 picture.jpg 上传到 folder 路径下* @return* @throws IOException*/public static URL uploadFile(MultipartFile file, String key) throws IOException {return uploadFile(file, COSConfig.Tencent_bucketName, key);}/*** 根据 bucketName 和 key 获取 URL 对象** @param bucketName 存储桶名称* @param key        文件路径及文件内容的组合* @return URL 对象*/public static URL getURL(String bucketName, String key) {return sCosClient.getObjectUrl(bucketName, key);}/*** 重写方法,根据 key 获取 URL 对象** @param key 文件路径及文件内容的组合* @return URL 对象*/public static URL getURL(String key) {return getURL(COSConfig.Tencent_bucketName, key);}/*** 关闭 COSClient 实例,在 springboot 销毁时调用*/public static void shutdownClient() {// 关闭客户端(关闭后台线程)sCosClient.shutdown();}
}

3、COSConfig类

import com.qcloud.cos.COSClient;
import lombok.Data;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = “prefix”, ignoreInvalidFields = true)
@RefreshScope
@Data
public class COSConfig implements InitializingBean, DisposableBean {private String bucketName;private String secretId;private String secretKey;private String region;private String domain;public static String Tencent_secretId;public static String Tencent_secretKey;public static String Tencent_bucketName;public static String Tencent_region;public static String Tencent_domain;@Overridepublic void afterPropertiesSet() {Tencent_secretId = secretId;Tencent_secretKey = secretKey;Tencent_bucketName = bucketName;Tencent_region = region;Tencent_domain = domain;}@Overridepublic void destroy() {CosUtils.shutdownClient();}@Beanpublic COSClient cosClient() {return CosUtils.getCosClient();}}

4、具体使用:

String cosFileUrl = CosUtils.uploadFile(FILE_PATH+"/"+fileName, inputStream);

java腾讯云COS使用相关推荐

  1. Java实现腾讯云COS高级(大文件)上传,不考虑分块

    // 腾讯云COS高级(大文件)上传,不用考虑分块public static URL fileCOS(File file, String key) throws Exception {String S ...

  2. Java springboot项目引入腾讯云COS实现上传

    Java springboot项目引入腾讯云COS实现上传 pom.xml 配置类CosConfig.java 上传工具类CosClientUtil.java pom.xml <!--腾讯云上传 ...

  3. java文件上传到腾讯云COS

    官方文档:https://cloud.tencent.com/document/product/436/10199 首先导入依赖 <!--腾讯云cos相关依赖--> <depende ...

  4. APP的文件数据直传腾讯云COS实践

    简介 本文主要介绍基于腾讯云对象存储COS,如何快速实现一个app的文件直传功能.您的服务器上只需要生成和管理访问密钥,无需关心细节,文件数据都存放在腾讯云 COS 上. 架构说明 对于app应用,把 ...

  5. SpringBoot整合腾讯云COS对象存储实现文件上传

    企业级项目开发中都会有文件.图片.视频等文件上传并能够访问的场景,对于初学者Demo可能会直接存储在应用服务器上:对于传统项目可能会单独搭建FastDFS.MinIO等文件服务来实现存储,这种方案可能 ...

  6. 腾讯云COS学习笔记

    一.环境 java 1.8 spring boot 1.5.8 gradle3.2.1 二.COS使用示例 1. COS是腾讯云提供的对象存储服务,功能非常强大,可以作为文件服务器,CDN加速,静态网 ...

  7. 腾讯云服务器怎么搭建ssm项目,SSM 项目如何上传图片到腾讯云COS?

    -------------------- 个人博客上已经同步更新了文章,有目录索引,阅读起来比较方便,欢迎大家移步个人博客上读阅~ 个人博客地址:[http://zwd596257180.gitee. ...

  8. 2021最新 腾讯云COS对象存储的简单使用

    叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的高清大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API) ...

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

    叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的高清大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API) ...

最新文章

  1. 鸿蒙系统真实评测,鸿蒙系统和安卓的区别-华为鸿蒙系统使用体验评测
  2. [译] ASP.NET 生命周期 – ASP.NET 上下文对象(八)
  3. ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
  4. android linux截图库,Android中截图(surfaceView)源码
  5. 关于ajax请求400问题解决
  6. 201521123035《Java程序设计》第八周学习总结
  7. 在此iphone上尚未受信任_通知:这5款iPhone过保依然可以免费维修
  8. 【Elastischearch】Elastischearch bulk 请求源码
  9. C++之异常处理探究
  10. mysql中php编程实例_PHP连接MYSQL数据库实例代码
  11. Django项目中使用Redis
  12. PHP中使用了mcrypt_decrypt函数处理Json Json_decode 返回空值或者 NULL 的问题 json_last_error 3...
  13. 汉诺塔c 语言程序代码,汉诺塔c语言程序代码.docx
  14. 一文看懂码灵半导体CFW32C7UL系列产品应用(八):扫码设备应用(上)
  15. linux安装pyodbc模块,Linux下安装pyodbc报错 error: command 'gcc' failed with exit status 1
  16. 【操作系统】结合哲学家进餐问题分析如何预防死锁
  17. 433M超再生无线模块编码-解码
  18. 网络会变的有自我意识吗
  19. 这三个文件在 C:\Program Files (x86)\Microsoft Office\root\Office16 下怎么会是符号链接?
  20. 陈艾盐:春燕百集访谈节目第二十集

热门文章

  1. 爱立信亚太区CTO:预计全球在2021年会有280亿联网设备
  2. 程序员眼里IE浏览器是什么样的
  3. 线上中国美食图鉴:舌尖上的家乡味道
  4. [原]碟评:张韶涵《欧若拉》
  5. 机器人受虐视频真相_网传机器人被虐视频 网友惊呼行动灵活却有心生畏惧
  6. 计算机毕业论文选题推荐|软件工程|系列七
  7. 部编版是什么版本_一年级语文,人教版和部编版有什么区别?看了这个就知道了!...
  8. [摘录]quarts :overview
  9. Tensorflow 2.0 最新版(2.4.1) 安装教程
  10. mac 卸载 安装mysql_SQL----mySQl卸载for mac