初始化客户端
初始化一个COS的客户端
引入依赖
<!-- 腾讯云 cos 服务 -->
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.227</version>
</dependency>
配置文件
见config包中 CosClientConfig.java文件
@Configuration
@ConfigurationProperties(prefix = "cos.client")
@Data
public class CosClientConfig {
/**
* 域名
*/
private String host;
/**
* secretId
*/
private String secretId;
/**
* 密钥(注意不要泄露)
*/
private String secretKey;
/**
* 区域
*/
private String region;
/**
* 桶名
*/
private String bucket;
@Bean
public COSClient cosClient() {
// 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 设置bucket的区域, COS地域的简称请参照 https://www.qcloud.com/document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region(region));
// 生成cos客户端
return new COSClient(cred, clientConfig);
}
}
写配置文件
为了避免密码泄露,最好新建一个application-local.yml文件,并忽略提交
# 对象存储配置(需要从腾讯云获取)
通用能力类
见manager包中 CosManager.java文件
测试文件上传
见FileController
修改配置启动
spring:
profiles:
active: local
文件下载
1、下载cos文件到后端服务器
2、获取到文件下载输入流
3、直接通过URL路径访问
如何将对象存储的文件下载到服务器中
见cosmanager.java 中 getobject方法
核心流程是根据路径获取到 COS 文件对象,然后将文件对象转换为文件流,
并写入到 Servlet 的 Response 对象中。注意要设置文件下载专属的响应头
public COSObject getObject(String key) {
GetObjectRequest getObjectRequest =
new GetObjectRequest(cosClientConfig.getBucket(), key);
return cosClient.getObject(getObjectRequest);
}