为了模仿真实的开发环境,在项目开发中,我们往往需要将项目中上传,下载的图片存储起来以备使用,这里我们将使用腾讯云的对象存储服务,将项目中需要的图片等新存储到腾讯云提供的存储桶中,使用的时候直接从云端获取即可,不必占用我们本地的存储空间,方便快捷。
看案例:
@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(); }如果有不明白的可以查询官方文档,腾讯云对象存储官方文档