腾讯云COS分布式对象存储
腾讯云对象存储(Cloud Object Storage,COS)是腾讯云提供的一种用于存储海量文件的分布式存储服务。
腾讯云 COS 适用于多种场景,如静态网站托管、大规模数据备份和归档、多媒体存储和处理、移动应用数据存储等。
存储类型
标准存储类型 | 高持久、高可用、高性能的对象存储服务,支持频繁的数据访问。是各种社交、分享类的图片、音视频应用、大型网站、大数据分析的合适选择。 |
---|---|
低频访问存储类型 | 适合长期保存不经常访问的数据(平均每月访问频率1到2次)。存储单价低于标准类型,适合各类移动应用、智能设备、企业数据的长期备份,支持实时数据访问。 |
归档存储类型 | 适合需要长期保存(建议半年以上)的归档数据,在存储周期内极少被访问,数据进入到可读取状态需要1分钟的解冻时间。适合需要长期保存的档案数据、医疗影像、科学资料、影视素材。 |
冷归档存储类型 | 适合需要超长时间存放的极冷数据。例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等。 |
使用步骤
演示基于java代码上传图片
1)登录控制台,创建存储桶
网址:https://console.cloud.tencent.com/cos
2)创建子账号,给予编程访问权限
网址:https://console.cloud.tencent.com/cam/user/create?systemTygpe=FastCreateV2
创建完后保存好SecretId
和SecretKey
3)项目中导入依赖
<!--腾讯云文件存储-->
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.213</version>
</dependency>
4)在application.yaml 中配置
tencent:
cos:
accessKeyId: your SecretId
accessKeySecret: your SecretKey
bucketName: your bucketName
5)使用配置类读取信息
@Configuration
@ConfigurationProperties("tencent.cos")
@Data
public class CosConfig {
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
6)创建客户端完成上传
@Service
@Slf4j
public class FileServiceImpl implements FileService {
@Autowired
private CosConfig cosConfig;
@Override
public void uploadImage(MultipartFile file) {
String secretId = cosConfig.getAccessKeyId();
String secretKey = cosConfig.getAccessKeySecret();
String bucket = cosConfig.getBucketName();
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// "ap-beijing" 为存储桶所在地区
ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing"));
// 创建客户端
COSClient cosClient = new COSClient(cred, clientConfig);
// 构建存储路径
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String time = now.format(dateTimeFormatter);
// 加上uuid防止文件名重复
String fileName = CommonUtils.getUUID() + "_" + file.getOriginalFilename();
String path = time + "/" + fileName;
try {
// 上传文件
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, path, file.getInputStream(),new ObjectMetadata());
cosClient.putObject(putObjectRequest);
} catch (IOException e) {
throw new RuntimeException(e);
}
finally {
// 关闭客户端
cosClient.shutdown();
}
}
}