java腾讯云COS使用
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使用相关推荐
- Java实现腾讯云COS高级(大文件)上传,不考虑分块
// 腾讯云COS高级(大文件)上传,不用考虑分块public static URL fileCOS(File file, String key) throws Exception {String S ...
- Java springboot项目引入腾讯云COS实现上传
Java springboot项目引入腾讯云COS实现上传 pom.xml 配置类CosConfig.java 上传工具类CosClientUtil.java pom.xml <!--腾讯云上传 ...
- java文件上传到腾讯云COS
官方文档:https://cloud.tencent.com/document/product/436/10199 首先导入依赖 <!--腾讯云cos相关依赖--> <depende ...
- APP的文件数据直传腾讯云COS实践
简介 本文主要介绍基于腾讯云对象存储COS,如何快速实现一个app的文件直传功能.您的服务器上只需要生成和管理访问密钥,无需关心细节,文件数据都存放在腾讯云 COS 上. 架构说明 对于app应用,把 ...
- SpringBoot整合腾讯云COS对象存储实现文件上传
企业级项目开发中都会有文件.图片.视频等文件上传并能够访问的场景,对于初学者Demo可能会直接存储在应用服务器上:对于传统项目可能会单独搭建FastDFS.MinIO等文件服务来实现存储,这种方案可能 ...
- 腾讯云COS学习笔记
一.环境 java 1.8 spring boot 1.5.8 gradle3.2.1 二.COS使用示例 1. COS是腾讯云提供的对象存储服务,功能非常强大,可以作为文件服务器,CDN加速,静态网 ...
- 腾讯云服务器怎么搭建ssm项目,SSM 项目如何上传图片到腾讯云COS?
-------------------- 个人博客上已经同步更新了文章,有目录索引,阅读起来比较方便,欢迎大家移步个人博客上读阅~ 个人博客地址:[http://zwd596257180.gitee. ...
- 2021最新 腾讯云COS对象存储的简单使用
叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的高清大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API) ...
- 腾讯云COS对象存储的简单使用
叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的高清大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API) ...
最新文章
- 鸿蒙系统真实评测,鸿蒙系统和安卓的区别-华为鸿蒙系统使用体验评测
- [译] ASP.NET 生命周期 – ASP.NET 上下文对象(八)
- ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
- android linux截图库,Android中截图(surfaceView)源码
- 关于ajax请求400问题解决
- 201521123035《Java程序设计》第八周学习总结
- 在此iphone上尚未受信任_通知:这5款iPhone过保依然可以免费维修
- 【Elastischearch】Elastischearch bulk 请求源码
- C++之异常处理探究
- mysql中php编程实例_PHP连接MYSQL数据库实例代码
- Django项目中使用Redis
- PHP中使用了mcrypt_decrypt函数处理Json Json_decode 返回空值或者 NULL 的问题 json_last_error 3...
- 汉诺塔c 语言程序代码,汉诺塔c语言程序代码.docx
- 一文看懂码灵半导体CFW32C7UL系列产品应用(八):扫码设备应用(上)
- linux安装pyodbc模块,Linux下安装pyodbc报错 error: command 'gcc' failed with exit status 1
- 【操作系统】结合哲学家进餐问题分析如何预防死锁
- 433M超再生无线模块编码-解码
- 网络会变的有自我意识吗
- 这三个文件在 C:\Program Files (x86)\Microsoft Office\root\Office16 下怎么会是符号链接?
- 陈艾盐:春燕百集访谈节目第二十集
热门文章
- 爱立信亚太区CTO:预计全球在2021年会有280亿联网设备
- 程序员眼里IE浏览器是什么样的
- 线上中国美食图鉴:舌尖上的家乡味道
- [原]碟评:张韶涵《欧若拉》
- 机器人受虐视频真相_网传机器人被虐视频 网友惊呼行动灵活却有心生畏惧
- 计算机毕业论文选题推荐|软件工程|系列七
- 部编版是什么版本_一年级语文,人教版和部编版有什么区别?看了这个就知道了!...
- [摘录]quarts :overview
- Tensorflow 2.0 最新版(2.4.1) 安装教程
- mac 卸载 安装mysql_SQL----mySQl卸载for mac