腾讯云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 SecretIdaccessKeySecret: your SecretKeybucketName: 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 {@Autowiredprivate CosConfig cosConfig;@Overridepublic 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();}}
}