2019-12-2415:51:41 腾讯云COS
研究了下文档,学会的先记录下。
首先新建工具类COSUtil。
配置账号暗码、存储桶以生成客户端(每个要领下都需要配置,为了代码简洁后面的要领会省略):
1 String secretId = "root"; //初始化用户身份信息(secretId, secretKey)。 2 String secretKey = "123456; 3 String bucketName = "test-1250000000"; //初始化存储桶 4 5 COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); 6 Region region = new Region("ap-shanghai"); //设置 bucket 的区域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 7 ClientConfig clientConfig = new ClientConfig(region); //clientConfig 中包罗了设置 region, https(默认 http), 超时, 代办代理等 set 要领, 使用可参见源码或者常见问题 Java SDK 部分。 8 COSClient cosClient = new COSClient(cred, clientConfig); //生成 cos 客户端。
文件上传:
public static String upload(File file) { if(file==null){ //判断文件是否为空 return null; } try { // 指定要上传到 COS 上东西键,东西键其实就是该文件存储在腾讯云的文件路径和文件名,如:"file/test.log"。 String key = "file/test.log"; System.out.println(key); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, file); PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); return key; //String etag = putObjectResult.getETag(); // 获取文件的 etag } catch (CosServiceException serverException) { serverException.printStackTrace(); } catch (CosClientException clientException) { clientException.printStackTrace(); } return ""; }
文件下载(流):
//传入key以获取文件下载流
public static COSObjectInputStream download(String key){
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);//按照桶和key获取文件请求
System.out.println("文件请求:"+getObjectRequest);
COSObject cosObject = cosClient.getObject(getObjectRequest);
COSObjectInputStream cosObjectInput = cosObject.getObjectContent();
System.out.println("输出流:"+cosObjectInput);
return cosObjectInput;
}
文件下载(实体):
//按照key下载文件实体
public static ObjectMetadata download1(String key){
File downFile = new File("d:/1111.pdf"); //自界说下载文件路径或直接填key
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);
//返回文件的属性 ObjectMetadata,包罗文件的自界说头和 content-type 等属性。
return downObjectMeta;
}
获取文件姑且url:
public static String generatePresignedUrl(String key){ //若要用此url检察在线文件,key必需以".png",".pdf"等后缀结尾 2020-01-04 12:02:47 Date expirationTime = new Date(System.currentTimeMillis() + 30L * 60L * 1000L); //半小时后过期 System.out.println("expiratioin"+expirationTime.toString()); URL url = cosClient.generatePresignedUrl(bucketName, key, expirationTime); //获取url地点 System.out.println(url); return url.toString(); }
在控制台打印文件信息(以下代码打印了全部):
public static void showAllFile(){
// Bucket的定名格局为 BucketName-APPID ,此处填写的存储桶名称必需为此格局
//String bucketName = "examplebucket-1250000000";
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
// 设置bucket名称
listObjectsRequest.setBucketName(bucketName);
// prefix暗示列出的object的key以prefix开始
listObjectsRequest.setPrefix("");
// deliter暗示分隔断绝分手符, 设置为/暗示列出当前目录下的object, 设置为空暗示列出所有的object
listObjectsRequest.setDelimiter("");
// 设置最大遍历出几多个东西, 一次listobject最大撑持1000
listObjectsRequest.setMaxKeys(1000);
ObjectListing objectListing = null;
do {
try {
objectListing = cosClient.listObjects(listObjectsRequest);
} catch (CosServiceException e) {
e.printStackTrace();
return;
} catch (CosClientException e) {
e.printStackTrace();
return;
}
// common prefix暗示暗示被delimiter截断的路径, 如delimter设置为/, common prefix则暗示所有子目录的路径
List<String> commonPrefixs = objectListing.getCommonPrefixes();
// 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();
System.out.println("路径与文件名:"+key);
System.out.println("etag:"+etag);
System.out.println("文件巨细:"+fileSize);
System.out.println("类型:"+storageClasses);
System.out.println();
}
String nextMarker = objectListing.getNextMarker();
listObjectsRequest.setMarker(nextMarker);
} while (objectListing.isTruncated());
}
删除文件(单个):
//删除文件 public static void deleteObject(String key){ cosClient.deleteObject(bucketName, key); }
删除文件(批量):
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32298.html