使用java实现腾讯云存储服务(COSClient)
获得几个cos必要字段
创建maven项目
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.5.2</version>
</dependency>
</dependencies>
</project>
后端代码
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.Date;
import java.util.List;
/**
* @Author: bravry
* @Date: 2019/5/7
* @Description: java实现腾讯云存储服务(COSClient)
* @REGIONID 区域
* @KEY 上传上云之后的名字
* @KEY01 需要删除的文件
*/
public class CosClientTest {
private static final String ACCESSKEY = "XXXXXXXXXXXX";
private static final String SECRETKEY ="XXXXXXXXXXXXXXXXXXXXXX";
private static final String BUCKETNAME = "bravery-1258739678";
private static final String APPID = "1258739678";
private static final String REGIONID = "ap-guangzhou";
private static final String KEY="MyFile1/zookeeper-3.4.8.tar.gz";
private static final String KEY01="MyFile1/1.jpg";
/**
* 初始化CosClient相关配置, appid、accessKey、secretKey、region
* @return
*/
public static COSClient getCosClient() {
// 1 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(ACCESSKEY, SECRETKEY);
// 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
// clientConfig中包含了设置region, https(默认http), 超时, 代理等set方法, 使用可参见源码或者接口文档FAQ中说明
ClientConfig clientConfig = new ClientConfig(new Region(REGIONID));
// 3 生成cos客户端
COSClient cosClient = new COSClient(cred, clientConfig);
// bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
//String bucketName = BUCKETNAME;
return cosClient;
}
/**
* 上传文件
* @return
* //绝对路径和相对路径都OK
*/
public static String uploadFile() {
// File localFile = new File("E:\\software\\JavaProject\\demo\\demo20\\src\\main\\resources\\1.jpg");
File localFile = new File("E:\\isTake.png");
PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKETNAME, KEY, localFile);
// 设置存储类型, 默认是标准(Standard), 低频(standard_ia),一般为标准的
putObjectRequest.setStorageClass(StorageClass.Standard);
COSClient cc = getCosClient();
try {
PutObjectResult putObjectResult = cc.putObject(putObjectRequest);
// putobjectResult会返回文件的etag
String etag = putObjectResult.getETag();
System.out.println(etag);
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}
// 关闭客户端
cc.shutdown();
return null;
}
/**
* 下载文件
* @param bucketName
* @param key
* @return
*/
public static String downLoadFile(String bucketName, String key) {
File downFile = new File("E:\\software\\1.jpg");
COSClient cc = getCosClient();
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
ObjectMetadata downObjectMeta = cc.getObject(getObjectRequest, downFile);
cc.shutdown();
String etag = downObjectMeta.getETag();
return etag;
}
/**
* 删除文件
* @param bucketName
* @param key
*/
public static void deleteFile(String bucketName, String key) {
COSClient cc = getCosClient();
try {
cc.deleteObject(bucketName, key);
} catch (CosClientException e) {
e.printStackTrace();
} finally {
cc.shutdown();
}
}
/**
* 创建桶
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static Bucket createBucket(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
Bucket bucket = null;
try {
bucket = cc.createBucket(bucketName);
} catch (CosClientException e) {
e.printStackTrace();
} finally {
}
return bucket;
};
/**
* 删除桶
* @param bucketName
* @throws CosClientException
* @throws CosServiceException
*/
public void deleteBucket(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
try {
cc.deleteBucket(bucketName);
} catch (CosClientException e) {
e.printStackTrace();
} finally {
}
};
/**
* 判断桶是否存在
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static boolean doesBucketExist(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
boolean bucketExistFlag = cc.doesBucketExist(bucketName);
return bucketExistFlag;
};
/**
* 查看桶文件
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static ObjectListing listObjects(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
// 获取 bucket 下成员(设置 delimiter)
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
listObjectsRequest.setBucketName(bucketName);
// 设置 list 的 prefix, 表示 list 出来的文件 key 都是以这个 prefix 开始
listObjectsRequest.setPrefix("");
// 设置 delimiter 为/, 即获取的是直接成员,不包含目录下的递归子成员
listObjectsRequest.setDelimiter("/");
// 设置 marker, (marker 由上一次 list 获取到, 或者第一次 list marker 为空)
listObjectsRequest.setMarker("");
// 设置最多 list 100 个成员,(如果不设置, 默认为 1000 个,最大允许一次 list 1000 个 key)
listObjectsRequest.setMaxKeys(100);
ObjectListing objectListing = cc.listObjects(listObjectsRequest);
// 获取下次 list 的 marker
String nextMarker = objectListing.getNextMarker();
// 判断是否已经 list 完, 如果 list 结束, 则 isTruncated 为 false, 否则为 true
boolean isTruncated = objectListing.isTruncated();
List<COSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
for (COSObjectSummary cosObjectSummary : objectSummaries) {
// get file path
String key = cosObjectSummary.getKey();
// get file length
long fileSize = cosObjectSummary.getSize();
// get file etag
String eTag = cosObjectSummary.getETag();
// get last modify time
Date lastModified = cosObjectSummary.getLastModified();
// get file save type
String StorageClassStr = cosObjectSummary.getStorageClass();
}
return objectListing;
}
/**
*查询一个 Bucket 所在的 Region。
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static String getBucketLocation(String bucketName) throws CosClientException , CosServiceException{
COSClient cosClient = getCosClient();
// bucket 的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
String location = cosClient.getBucketLocation(bucketName);
return location;
}
public static void main(String[] args) {
System.out.println("111");
uploadFile();
// downLoadFile(BUCKETNAME , KEY);
// deleteFile(BUCKETNAME , KEY01);
// createBucket("sunjunxian01-1251782781");
//deleteBucket();
// doesBucketExist("sunjunxian01-1251782781");
// System.out.println(listObjects(BUCKETNAME));
//System.out.println("BUCKETNAME的位置:" + getBucketLocation(BUCKETNAME));
}
}