阅读 438

大话--对象存储 OSS

这是我参与新手入门的第2篇文章

前言

  对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。

一、什么是对象存储

  对象象存储OSS(Object Storage Service)是提供的海量、安全、低成本、高持久的云存储服务。

OSS特点

  • 持久性
  • 安全
  • 成本低
  • 智能存储
  • 方便、快捷
  • 强大、灵活
  • 数据冗余机制
  • 丰富、强大的处理功能

二、应用场景

1、图片和音视频等应用的海量存储

  OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。OSS支持流式写入和文件写入两种方式。

2、网页或者移动应用的静态和动态资源分离

  利用海量互联网带宽,OSS可以实现海量数据的互联网并发下载。OSS提供原生的传输加速功能,支持上传加速、下载加速,提升跨国、跨洋数据上传、下载的体验。同时,OSS也可以结合CDN产品,提供静态内容存储、分发到边缘节点的解决方案,利用CDN边缘节点缓存的数据,提升同一个文件被同一地区客户大量重复并发下载的体验。

3、云端数据处理

  上传文件到OSS后,可以配合媒体处理服务和图片处理服务进行云端的数据处理。

三、快速使用

1、方式一:在Maven项目中加入依赖项(推荐方式)

在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相应依赖即可。以3.10.2版本为例,在<dependencies>中加入如下内容:

<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、方式二:在Eclipse项目中导入JAR包

以3.10.2版本为例,步骤如下:

  1. 下载Java SDK 开发包。
  2. 解压该开发包。
  3. 将解压后文件夹中的文件aliyun-sdk-oss-3.10.2.jar以及lib文件夹下的所有文件拷贝到您的项目中。
  4. 在Eclipse中选择您的工程,右键选择Properties > Java Build Path > Add JARs。
  5. 选中拷贝的所有JAR文件,导入到Libraries中。

3、方式三:在Intellij IDEA项目中导入JAR包

以3.10.2版本为例,步骤如下:

  1. 下载Java SDK 开发包。
  2. 解压该开发包。
  3. 将解压后文件夹中的文件aliyun-sdk-oss-3.10.2.jar以及lib文件夹下的所有JAR文件拷贝到您的项目中。
  4. 在Intellij IDEA中选择您的工程,右键选择File > Project Structure > Modules > Dependencies > + > JARs or directories 。
  5. 选中拷贝的所有JAR文件,导入到External Libraries中。

四、使用示例

1、上传文件

 public static void uploadFile(File file, String goodsImgPath) {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
        ossClient.putObject(bucketName, goodsImgPath, file);
        ossClient.setObjectAcl(bucketName, goodsImgPath, CannedAccessControlList.PublicRead);
        // 关闭OSSClient。
        ossClient.shutdown();
    }
复制代码

2、上传文件流

  public static void uploadFileInputStream(InputStream inputStream , String goodsImgPath) {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 上传文件流。
        ossClient.putObject(bucketName, goodsImgPath, inputStream);
        ossClient.setObjectAcl(bucketName, goodsImgPath, CannedAccessControlList.PublicRead);
        // 关闭OSSClient。
        ossClient.shutdown();
    }
复制代码

3、下载文件

  public static void downloadFileInputStream(InputStream inputStream , String goodsImgPath) {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
        OSSObject ossObject = ossClient.getObject(bucketName, objectName);

        // 读取文件内容。
        System.out.println("Object content:");
        BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
        while (true) {
            String line = reader.readLine();
            if (line == null) break;

            System.out.println("\n" + line);
        }
        // 关闭流。
        reader.close();

        // 关闭OSSClient。
        ossClient.shutdown();
    }

复制代码

五、结语

  OSS适合存储论坛网站与软件应用中的附件、高清图片、音视频、备份文件等,以及各种App应用、多终端同步软件、网盘下载站的文件。更多功能大家查阅相关文档挖掘发现。

文章分类
后端
文章标签