COS的配置及使用
COS(Cloud Object Service) 对象存储服务。
高可用、高稳定、强安全的云端存储服务,可以将任意数量和形式的非结构化数据放入COS,并在其中实现数据管理和处理。
Maven依赖
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.24</version>
</dependency>
配置类
package com.sf.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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.region.Region;
@Configuration
public class CosConfig {
private String secretId;
private String secretKey;
private String regionName;
@Bean(destroyMethod="shutdown")
public COSClient cosClientInit() {
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
Region region = new Region(regionName);
ClientConfig clientConfig = new ClientConfig(region);
clientConfig.setHttpProtocol(HttpProtocol.http);
return new COSClient(cred, clientConfig);
}
}
使用方式(以图片二进制流为例)
@Autowired
private COSClient cosClient;
private String bucketName;
String key = fileName;//文件名,即文件的存储路径
InputStream inputStream = new ByteArrayInputStream(bytes);//bytes就是图片的具体二进制流
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setServerSideEncryption("AES256");
objectMetadata.setContentLength(bytes.length);
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, inputStream, objectMetadata);
// 上传腾讯cos存储
cosClient.putObject(putObjectRequest);
return bucketName + Constants.QUOTE3 + filePath;
直接使用http的方式对图片进行下载
String imgUrl = “imgUrl“;
String url = cosDomainProxy + imgUrl;//图片的cos地址
String path = "path";//图片要下载到的地址
HttpRequest get = HttpUtil.createGet(url);
HttpResponse execute = get.execute();
if (!execute.isOk()) {
log.error("download photo failed...");
}
FileUtil.writeBytes(execute.bodyBytes(),path);//execute.bodyBytes()得到的就是图片的二进制流