OSS工具类

阿里云官方文档 :
工具类

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));
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值