学而不思则罔 思而不学则殆.|

漆原Blog

园龄:5年10个月粉丝:0关注:1

阿里云OSS入门与Java集成

什么是对象存储OSS?

对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务设计可用性不低于99.995%。OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

对象存储OSS提供标准、低频访问、归档和冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景:

存储类型
标准存储类型 高持久、高可用、高性能的对象存储服务,支持频繁的数据访问。是各种社交、分享类的图片、音视频应用、大型网站、大数据分析的合适选择。
低频访问存储类型 适合长期保存不经常访问的数据(平均每月访问频率1到2次)。存储单价低于标准类型,适合各类移动应用、智能设备、企业数据的长期备份,支持实时数据访问。
归档存储类型 适合需要长期保存(建议半年以上)的归档数据,在存储周期内极少被访问,数据进入到可读取状态需要1分钟的解冻时间。适合需要长期保存的档案数据、医疗影像、科学资料、影视素材。
冷归档存储类型 适合需要超长时间存放的极冷数据。例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等。
适用场景:
  • 静态网站内容和音视频的存储与分发
  • 静态网站托管
  • 计算和分析的数据存储仓库
  • 数据备份和归档

详见:阿里云对象存储OSS在线文档

如何选购?

进入阿里云官网首页 → 产品 → 存储 → 对象存储OSS

首次进入后需要开通OSS服务,开通后进入购买页选择地域、规格、时长等。如果只是个人建站学习的话40G足矣,价格也很便宜,按需购买即可。

如何与Java集成?

准备工作:

服务开通好了,现在就来与java进行集成吧。首先需要设置一个AccessKey,这个是阿里云的API密钥,用于认证鉴权,具有账户的完全操作权限,请妥善保管

操作步骤也很简单,进入页面后直接点击[创建 AccessKey]按钮,系统会自动生成一对密钥。

密钥创建好后,还需要创建一个Bucket,供后续使用。

创建步骤如图:

Bucket名称全局共享,不可重复。地域信息、冗余存储等配置按需开启即可。

开始集成:

开发之前需要了解一些基本概念,请访问OSS产品简介-基本概念参阅,就不再赘述了。

好了,闲话一堆,开始真正的集成工作吧。

  1. 安装SDK

    官方提供了三种方式安装SDK(maven中添加依赖、在Eclipse项目中导入JAR包、在Intellij IDEA项目中导入JAR包),我们使用maven方式进行安装。

    • 引入maven坐标

      <dependency>
          <groupId>com.aliyun.oss</groupId>
          <artifactId>aliyun-sdk-oss</artifactId>
          <version>3.10.2</version>
      </dependency>
      
    • 如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。添加jaxb相关依赖示例代码如下:

      <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <version>2.3.1</version>
      </dependency>
      <dependency>
          <groupId>javax.activation</groupId>
          <artifactId>activation</artifactId>
          <version>1.1.1</version>
      </dependency>
      <!-- no more than 2.3.3-->
      <dependency>
          <groupId>org.glassfish.jaxb</groupId>
          <artifactId>jaxb-runtime</artifactId>
          <version>2.3.3</version>
      </dependency>
      
  2. 初始化

    OSSClient是OSS的Java客户端,用于管理存储空间和文件等OSS资源。使用Java SDK发起OSS请求,您需要初始化一个OSSClient实例,并根据需要修改ClientConfiguration的默认配置项。

    我们创建一个客户端管理类,专门管理与实例化OSS客户端,并将它交由Spring容器管理。

    @Component
    public class OSSClientManager {
    
        private final static String ENDPOINT = "oss-cn-hangzhou.aliyuncs.com";
        private final static String ACCESS_KEY_ID = "LTAI5tRrk7SWBhLJhc5ccmvq";
        private final static String ACCESS_KEY_SECRET = "hxmyht87mlCCp907Syd5mNS2i0ZRiZ";
    
        /**
         * 获取阿里云OSS客户端实例
         *
         * @return 客户端实例
         */
        public OSS getOSSClient() {
            return new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        }
    }
    

    ENDPOINT:在Bucket概览页面copy过来。

    ACCESS_KEY_ID ACCESS_KEY_SECRET:准备工作中生成的密钥对,就不过多解释了。

  3. 上传文件

    客户端初始化好了,我们就来尝试往阿里云OSS中上传一个文件吧。

    public void uploadOSSFile() throws IOException {
        String objectName = "file/cat.jpg";
        OSS ossClient = ossClientManager.getOSSClient();
        File file = new File("E:\\wlp\\图片\\cat.jpg");
        ossClient.putObject("wanglposs", objectName, new ByteArrayInputStream(toByteArray(file)));
        ossClient.shutdown();
    }
    

    objectName:文件名称,通常是包含后缀名的完整路径,注意不要使用/开头,否则会报The specified object is not valid.异常。

    ossClient.shutdown():调用后,需要手动关闭客户端,以免造成资源浪费。

    上传完成后,就可以通过控制台中的文件管理找到这个文件了,如果是图片可以直接在线预览。

  1. 文件下载

    public void downloadOSSFile() {
        OSS ossClient = ossClientManager.getOSSClient();
        OSSObject ossObject = ossClient.getObject("wanglposs", "file/cat.jpg");
        try (InputStream content = ossObject.getObjectContent()) {
            File file = new File("E:\\wlp\\download\\cat.jpg");
            Files.copy(content, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
        ossClient.shutdown();
    }
    

    ossClient.getObject:传入Bucket名称与对象名,返回一个包含文件内容及文件元信息的OSSObject实例。

    ossObject.getObjectContent:获取一个文件的输入流,读取输入流可获取其内容。这里使用了try自动关闭流,否则需要手动关闭content.close();

  2. 列举文件

    public void ossFileList() {
        OSS ossClient = ossClientManager.getOSSClient();
        ObjectListing objectListing = ossClient.listObjects("wanglposs");
        objectListing.getObjectSummaries().forEach(o -> System.out.println("name:" + o.getKey() + " size:" + o.getSize()));
        ossClient.shutdown();
    }
    

    控制台输出:

    name:file/cat.jpg size:35962
    name:file/主线停电类型.jpg size:953011
    name:file/开发计划(1).xls size:20480
    

    ossClient.listObjects("wanglposs"):传入bucket名称,返回ObjectListing实例。

    objectListing.getObjectSummaries():获取所有文件的描述信息。

  3. 删除文件

    public void removeOssFile() {
        OSS ossClient = ossClientManager.getOSSClient();
        ossClient.deleteObject("wanglposs", "file/001.jpg");
        ossClient.shutdown();
    }
    

    ossClient.deleteObject:传入bucket名称与对象名称执行删除。

结束语

​ 以上列举了阿里云OSS的相关介绍与最基本的java集成操作,更深入的操作请自行参阅阿里云OSS帮助文档

本文作者:漆原Blog

本文链接:https://www.cnblogs.com/7moon/p/14658723.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   漆原Blog  阅读(608)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起