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