阿里云官方文档 :
工具类
package cm.hypers.util;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.*;
import com.sun.javafx.scene.control.skin.ButtonSkin;
import java.io.*;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
* @Author : defei.su
* @Date : 2021/5/21 10:32
*/
public class OssUtils {
//AccessKey
private static String accessKeyId = " ";
//AccessKeySecret
private static String accessKeySecret = " ";
//Endpoint
private static String endpoint = " ";
//bucketName
private static String bucketName = null;
/**
* 私有化构造
*/
private OssUtils() {
}
public static OSS buildOSSClient(){
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
return ossClient;
}
//列举所有的存储空间
public static void listAllBukets(OSS oss){
List<Bucket> buckets = oss.listBuckets();
// 列举指定前缀的存储空间
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
listBucketsRequest.setPrefix("cnacdp");
// 列举指定 marker 之后的存储空间
listBucketsRequest.setMarker("");
//列举指定个数的存储空间
listBucketsRequest.setMaxKeys(500);
BucketList bucketList = oss.listBuckets(listBucketsRequest);
List<Bucket> bucketList1 = bucketList.getBucketList();
for (Bucket bucket: buckets){
System.out.println( bucket.getName() );
}
}
public static void getBucketInfos(OSS oss,String bucketName){
BucketInfo bucketInfo = oss.getBucketInfo(bucketName);
// 获取地域
String location = bucketInfo.getBucket().getLocation();
// 获取创建日期
Date creationDate = bucketInfo.getBucket().getCreationDate();
// 获取拥有者信息
Owner owner = bucketInfo.getBucket().getOwner();
// 获取权限信息
Set<Grant> grants = bucketInfo.getGrants();
// 获取容灾类型
bucketInfo.getDataRedundancyType();
}
public static void getSetBucketAcl(OSS oss ,String bucketName){
/** 私有 CannedAccessControlList.Private.
* 公共读 CannedAccessControlList.PublicRead
* 公共读写 CannedAccessControlList.PublicReadWrite
*/
AccessControlList bucketAcl = oss.getBucketAcl(bucketName);
System.out.println(bucketAcl.toString());
// oss.setBucketAcl(bucketName,CannedAccessControlList.PublicReadWrite);
}
//判断 bucket 是否存在 ,不存在则创建
public static boolean ifExistBucket(OSS oss , String bucketName){
if (oss.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
return true;
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
oss.createBucket(bucketName);
return false;
}
}
//访问日志
public static void getRequestLog(OSS oss ,String bucketName){
BucketLoggingResult bucketLogging = oss.getBucketLogging(bucketName);
// 获取
// 存放日志文件的存储空间
String targetBucket = bucketLogging.getTargetBucket();
//存放日志文件的目录
String targetPrefix = bucketLogging.getTargetPrefix();
// 开启
SetBucketLoggingRequest request = new SetBucketLoggingRequest(bucketName);
request.setTargetBucket("");
request.setTargetPrefix("");
// 关闭
request.setTargetBucket(null);
request.setTargetPrefix(null);
}
// 获取该 Bucket 下所有的 Object
public static List<OSSObjectSummary> getObjectsOfBucket(OSS oss , String bucketName){
ObjectListing objectListing = oss.listObjects(bucketName);
List<OSSObjectSummary> objectSummary = objectListing.getObjectSummaries();
System.out.println("您有以下Object:");
for (OSSObjectSummary object : objectSummary) {
System.out.println("\t" + object.getKey());
}
return objectSummary;
}
// 上传一个Byte数组到 Oss
public static void putStringObject(OSS oss ,String bucketName, String firstKey ,String content){
InputStream inputStream = new ByteArrayInputStream(content.getBytes());
PutObjectResult putObjectResult = oss.putObject(bucketName, firstKey, inputStream);
System.out.println("Object:" + firstKey + "存入OSS成功。");
}
// 上传本地文件到 Oss ,所有格式的数据均可以
// 如果该文件已经存在,则是直接覆盖原文件
// 每一个目录以及每一个目录下的文件都是一个 Object ,上传到指定的目录, ObjectKey 需是完整的目录
// 当目录不存在时,则会直接创建相应的目录
public static void putLocalFile(OSS oss ,String bucketName ,String fileKey , String localFilePath){
try {
oss.putObject(bucketName, fileKey, new File(localFilePath));
InputStream inputStream = new FileInputStream(localFilePath);
// oss.putObject(bucketName,fileKey,inputStream);
System.out.println("Object:" + fileKey + "存入OSS成功。");
}catch (FileNotFoundException e){
e.printStackTrace();
}
}
public static void putLocalFileOverWrite(OSS oss ,String bucketName ,String fileKey , String localFilePath){
// 指定上传文件操作时是否覆盖同名Object。
// 不指定 x-oss-forbid-overwrite 时,默认覆盖同名Object
// 指定 x-oss-forbid-overwrite 为 false 时,表示允许覆盖
// 指定 x-oss-forbid-overwrite 为 true 时,表示禁止覆盖,如果同名Object已存在,程序将报错
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileKey, new File(localFilePath));
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setHeader("x-oss-forbid-overwrite","true");
putObjectRequest.setMetadata(objectMetadata);
oss.putObject(putObjectRequest);
System.out.println("Object:" + fileKey + "存入OSS成功。");
}
// 获取 Object 文件内容
public static String readObjectContents(OSS oss ,String bucketName ,String objectKey){
OSSObject object = oss.getObject(bucketName, objectKey);
InputStream inputStream = object.getObjectContent();
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
// 读取文件内容。
System.out.println("Object content:");
StringBuffer stringBuffer = new StringBuffer();
//使用try(){}..关闭资源
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));) {
//读取
while (true) {
String line = reader.readLine();
if (line == null) break;
stringBuffer.append(line);
}
reader.close();
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("Object:" + objectKey + "的内容是:" + stringBuffer);
return stringBuffer.toString();
}
//下载文件到本地 , 可以下载所有文件类型
public static void downloadFileToLocal(OSS oss ,String bucketName ,String fileKey , String localFilePath){
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, fileKey);
//设置要下载的文件的范围
// getObjectRequest.setRange(10, 12);
oss.getObject(getObjectRequest,new File(localFilePath));
}
}