Bootstrap

腾讯云COS分布式对象存储

腾讯云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

请添加图片描述

创建完后保存好SecretIdSecretKey

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();
        }
    }
}
;