对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。腾讯云 COS 使所有用户都能使用具备高扩展性、低成本、可靠和安全的数据存储服务。
COS 通过控制台、API、SDK 和工具等多样化方式简单、快速地接入,实现了海量数据存储和管理。通过 COS 可以进行多格式文件的上传、下载和管理。腾讯云提供了直观的 Web 管理界面,同时遍布全国范围的 CDN 节点可以对文件下载进行加速。
若您使用永久密钥初始化 COSClient,可以先在访问管理控制台中的 API 密钥管理 页面获取 SecretId、SecretKey,使用永久密钥适用于大部分的应用场景;
<dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.8</version>
</dependency>
// 1 初始化用户身份信息(secretId, secretKey)。
String secretId = "COS_SECRETID";
String secretKey = "COS_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-guangzhou");
ClientConfig clientConfig = new ClientConfig(region);
// 3 生成 cos 客户端。
COSClient cosClient = new COSClient(cred, clientConfig);
// 存储桶名称,格式:BucketName-APPID(后面ID每个用户唯一)(需要改1)String bucket = "exa-1300615854";CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
// 设置 bucket 的权限为 PublicRead(公有读私有写), 其他可选有私有读写, 公有读写createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);try{Bucket bucketResult = cosClient.createBucket(createBucketRequest);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}
try {List<Bucket> buckets = cosClient.listBuckets();System.out.println(buckets);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}
try {// 指定要上传的文件(需要改1)File localFile = new File("D:\\11.pdf");// 指定要上传到的存储桶(需要改2)String bucketName = "start-1300615357";// 指定要上传到 COS 上对象键(需要改3)String key = "exampl";PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
} catch (CosServiceException serverException) {serverException.printStackTrace();
} catch (CosClientException clientException) {clientException.printStackTrace();
}
try {
// 桶容器的名称(需要改1)String bucket = "start-1300615357";ListObjectsRequest listObjectsRequest = new ListObjectsRequest();// 设置 bucket 名称listObjectsRequest.setBucketName(bucket);// prefix 表示列出的 object 的 key 以 prefix 开始listObjectsRequest.setPrefix("");// 设置最大遍历出多少个对象, 一次 listobject 最大支持1000listObjectsRequest.setMaxKeys(1000);listObjectsRequest.setDelimiter("/");ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);for (COSObjectSummary cosObjectSummary : objectListing.getObjectSummaries()) {// 对象的路径 keyString key = cosObjectSummary.getKey();// 对象的 etagString etag = cosObjectSummary.getETag();// 对象的长度long fileSize = cosObjectSummary.getSize();// 对象的存储类型String storageClass = cosObjectSummary.getStorageClass();System.out.println("key:" + key + "; etag:" + etag + "; fileSize:" + fileSize + ";storageClass:" + storageClass);}} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}
try{
// 指定对象所在的存储桶(需要改1)String bucketName = "start-1300615357";
// 指定对象在 COS 上的对象键(需要改2)String key = "exampl";
// 指定要下载到的本地路径(需要制定文件名)(需要改3)File downFile = new File("D:\\12.pdf");GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();
}
删除 COS 上指定路径的对象;
try {
// 指定对象所在的存储桶(需要改1)String bucketName = "start-1300615357";
// 指定对象在 COS 上的对象键(需要改2)String key = "exampl";cosClient.deleteObject(bucketName, key);
} catch (CosServiceException serverException) {serverException.printStackTrace();
} catch (CosClientException clientException) {clientException.printStackTrace();
}
关闭 cosClient,并释放 HTTP 连接的后台管理线程。
// 关闭客户端(关闭后台线程)
cosClient.shutdown();
下面是一个完成的代码。主要把账号信息改为自己的就可以了;
package com.lydms.web;import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.model.*;
import com.qcloud.cos.region.Region;import java.io.File;
import java.util.List;public class TestCos {public static void main(String[] args) {
// 1 初始化用户身份信息(secretId, secretKey)。String secretId = "AKIDTmyudXgm59zmT6T3GI5cw3wb1T5lmYeU";String secretKey = "mJZTKp8GApJpBTErIWZNuCLJ5cTeuvhF";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-beijing");ClientConfig clientConfig = new ClientConfig(region);
// 3 生成 cos 客户端。COSClient cosClient = new COSClient(cred, clientConfig);// 查询存储桶列表getbucket(cosClient);// 上传文件到桶容器upload(cosClient);// 查询存储桶中内容getContent(cosClient);// 下载文件downFile(cosClient);// 删除文件deleteFile(cosClient);// 创建桶容器creatBucket(cosClient);// 关闭客户端(关闭后台线程)cosClient.shutdown();}/*** 创建存储桶(需要改3处)* @return*/private static void creatBucket(COSClient cosClient) {String bucket = "exa-1300415347";CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
// 设置 bucket 的权限为 PublicRead(公有读私有写), 其他可选有私有读写, 公有读写createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);try {Bucket bucketResult = cosClient.createBucket(createBucketRequest);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}}/*** 删除文件(需要改2处位置)* @param cosClient*/private static void deleteFile(COSClient cosClient) {try {// 指定对象所在的存储桶(需要改1)String bucketName = "start-1300415347";// 指定对象在 COS 上的对象键(需要改2)String key = "exampl";cosClient.deleteObject(bucketName, key);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}}/*** 下载文件(需要改3处位置)** @param cosClient*/private static void downFile(COSClient cosClient) {try {// 指定对象所在的存储桶(需要改1)String bucketName = "start-1300415347";// 指定对象在 COS 上的对象键(需要改2)String key = "exampl";// 指定要下载到的本地路径(需要制定文件名)(需要改3)File downFile = new File("D:\\12.pdf");GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}}/*** 查询存储桶中内容(需要改1处位置)** @param cosClient*/private static void getContent(COSClient cosClient) {try {
// 桶容器的名称(需要改1)String bucket = "start-1300415347";ListObjectsRequest listObjectsRequest = new ListObjectsRequest();// 设置 bucket 名称listObjectsRequest.setBucketName(bucket);// prefix 表示列出的 object 的 key 以 prefix 开始listObjectsRequest.setPrefix("");// 设置最大遍历出多少个对象, 一次 listobject 最大支持1000listObjectsRequest.setMaxKeys(1000);listObjectsRequest.setDelimiter("/");ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);for (COSObjectSummary cosObjectSummary : objectListing.getObjectSummaries()) {// 对象的路径 keyString key = cosObjectSummary.getKey();// 对象的 etagString etag = cosObjectSummary.getETag();// 对象的长度long fileSize = cosObjectSummary.getSize();// 对象的存储类型String storageClass = cosObjectSummary.getStorageClass();System.out.println("key:" + key + "; etag:" + etag + "; fileSize:" + fileSize + "; storageClass:" + storageClass);}} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}}/*** 上传文件到桶容器(需要改3处位置)** @param cosClient*/private static void upload(COSClient cosClient) {try {// 指定要上传的文件(需要改1)File localFile = new File("D:\\11.pdf");// 指定要上传到的存储桶(需要改2)String bucketName = "start-1300415347";// 指定要上传到 COS 上对象键(需要改3)String key = "exampl";PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}}/*** 查询存储桶列表(根据用户信息进行)** @param cosClient*/private static void getbucket(COSClient cosClient) {try {List<Bucket> buckets = cosClient.listBuckets();System.out.println(buckets);} catch (CosServiceException serverException) {serverException.printStackTrace();} catch (CosClientException clientException) {clientException.printStackTrace();}}
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态