为了模仿真实的开发环境,在项目开发中,我们往往需要将项目中上传,下载的图片存储起来以备使用,这里我们将使用腾讯云的对象存储服务,将项目中需要的图片等新存储到腾讯云提供的存储桶中,使用的时候直接从云端获取即可,不必占用我们本地的存储空间,方便快捷。
看案例:
@Test
public void list() {
// 1 初始化用户身份信息(secretId, secretKey)。
//这里的id,key可以在腾讯云控制台中自己生成。
String secretId = "*******";
String secretKey = "******";
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置 bucket 的区域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
Region region = new Region("ap-shanghai"); //上海的存储桶 wangxk-1255619906
ClientConfig clientConfig = new ClientConfig(region);
// 3 生成 cos 客户端。
COSClient cosClient = new COSClient(cred, clientConfig);
try {
// 指定对象所在的存储桶
String bucketName = "wangxk-1255619906";
List<Bucket> buckets = cosClient.listBuckets();
System.out.println("存储的对象集合为:" + buckets);
//查询对象列表
String bucket = "wangxk-1255619906";
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
// 设置 bucket 名称
listObjectsRequest.setBucketName(bucket);
// prefix 表示列出的 object 的 key 以 prefix 开始
listObjectsRequest.setPrefix("");
// 设置最大遍历出多少个对象, 一次 listobject 最大支持1000
listObjectsRequest.setMaxKeys(1000);
listObjectsRequest.setDelimiter("/");
ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
for (COSObjectSummary cosObjectSummary : objectListing.getObjectSummaries()) {
// 对象的路径 key
String key = cosObjectSummary.getKey();
// 对象的 etag
String etag = cosObjectSummary.getETag();
// 对象的长度
long fileSize = cosObjectSummary.getSize();
// 对象的存储类型
String storageClass = cosObjectSummary.getStorageClass();
System.out.println("key:" + key + "; etag:" + etag + "; fileSize:" + fileSize + "; storageClass:" + storageClass);
}
//删除对象
// 指定对象在 COS 上的对象键
String key = "dasdada.jpg"; //图片的名称
cosClient.deleteObject(bucketName, key);
//上传本地对象到存储桶中
File localFile = new File("C:\\Users\\wangxk\\Pictures\\timg (6).jpg");
String uploadPinture = "Blog_Picture/timg (6).jpg";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, uploadPinture, localFile);
// 设置存储类型为低频
putObjectRequest.setStorageClass(StorageClass.Standard_IA);
// 设置自定义属性(如 content-type, content-disposition 等)
ObjectMetadata objectMetadata = new ObjectMetadata();
// 设置 Content type, 默认是 application/octet-stream
objectMetadata.setContentType("image/jpeg");
putObjectRequest.setMetadata(objectMetadata);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
String etag = putObjectResult.getETag(); // 获取文件的 etag
System.out.println("得到的返回值为:" + etag);
//下载对象到本地
File downFile = new File("D:/picture/0a126742810942e193b46020082e1801.jpg");
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, "0a126742810942e193b46020082e1801.jpg");
ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);
} catch (CosServiceException serverException) {
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
}
// 关闭客户端
cosClient.shutdown();
}
如果有不明白的可以查询官方文档,腾讯云对象存储官方文档