SpringBoot+COS快速入门
按照 SpringBoot微服务快速入门案例,搭建一个SpringBoot基础项目,名字叫
springBoot_cos_dome
本文主要总结腾讯COS对象存储:
官网文档
- 导入对象存储SDK依赖
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.45</version>
</dependency>
-
创建
com.lu.controller
并建立
COSController
-
通过SDK,封装创建连接对象方法,秘钥可以从
官网
获取
public COSClient getCosClient(){
String secretId = "****";
String secretKey = "****";
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
Region region = new Region("COS_REGION");
ClientConfig clientConfig = new ClientConfig(region);
// 这里建议设置使用 https 协议
clientConfig.setHttpProtocol(HttpProtocol.https);
return new COSClient(cred, clientConfig);
}
- 写一个控制方法,返回存储桶列表
@GetMapping("getList")
public List<Bucket> getList() {
return getCosClient().listBuckets();
}
- 最后通过访问 ,即可看到自己存储桶的列表JSON数据及连接成功了
http://127.0.0.1:8080/getList
一、 创建存储桶
public Boolean createBucketRequest(String cosName) {
CreateBucketRequest createBucketRequest = new CreateBucketRequest(cosName);
createBucketRequest.setCannedAcl(CannedAccessControlList.Private); 设置 bucket 的权限为 Private(私有读写)、其他可选有 PublicRead(公有读私有写)、PublicReadWrite(公有读写)
try {
Bucket bucketResult = getCosClient().createBucket(createBucketRequest);
return true;
} catch (Exception e) {
return false;
}
}
二、上传文件
public Boolean upFile(UpFile file) {
// 指定要上传的文件
File localFile = new File(file.getLocalFilePath());
// 指定文件上传到 COS 上的路径,即对象键。例如对象键为folder/picture.jpg,则表示将文件 picture.jpg 上传到 folder 路径下
PutObjectResult putObjectResult = getCosClient().putObject(file.getBucketName(), file.getKey(), localFile);
String etag = putObjectResult.getETag(); // 获取文件的 etag
return true;
}
三、获取对象列表
public List<Map<String,Object>> getFileList(String bucketName){
List<Map<String,Object>> list=new ArrayList<>();
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
// 设置bucket名称
listObjectsRequest.setBucketName(bucketName);
// deliter表示分隔符, 设置为/表示列出当前目录下的object, 设置为空表示列出所有的object
listObjectsRequest.setDelimiter("/");
// 设置最大遍历出多少个对象, 一次listobject最大支持1000
listObjectsRequest.setMaxKeys(1000);
ObjectListing objectListing = null;
do {
try {
objectListing = getCosClient().listObjects(listObjectsRequest);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> map=new HashMap<>();
// common prefix表示表示被delimiter截断的路径, 如delimter设置为/, common prefix则表示所有子目录的路径
List<String> commonPrefixs = objectListing.getCommonPrefixes();
map.put("commonPrefixs",commonPrefixs);
// object summary表示所有列出的object列表
List<COSObjectSummary> cosObjectSummaries = objectListing.getObjectSummaries();
for (COSObjectSummary cosObjectSummary : cosObjectSummaries) {
// 文件的路径key
String key = cosObjectSummary.getKey();
// 文件的etag
String etag = cosObjectSummary.getETag();
// 文件的长度
long fileSize = cosObjectSummary.getSize();
// 文件的存储类型
String storageClasses = cosObjectSummary.getStorageClass();
map.put("key",cosObjectSummary.getKey());
map.put("etag",cosObjectSummary.getETag());
map.put("fileSize",cosObjectSummary.getSize());
map.put("storageClasses",cosObjectSummary.getStorageClass());
}
String nextMarker = objectListing.getNextMarker();
listObjectsRequest.setMarker(nextMarker);
list.add(map);
} while (objectListing.isTruncated());
return list;
}
四、 删除对象
@GetMapping("/deleteFile")
private Boolean deleteFile(String name, String key) {
cosService.getCosClient().deleteObject(name, key);
return false;
}
版权声明:本文为qq_44691287原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。