阿里云对象存储OSS入门使用

数据,文件的存储:

  • 数据(MySQL)
  • 数据(MySQL)+ 文件(本地:IO流)
  • 数据(MySQL)+ 缓存(Redis)+文件(服务器集群上,fastDFS(集群),Hdfs(大数据))
  • 数据(MySQL)+ 缓存(Redis)+文件(OSS)

OSS 就是为了解决海量数据存储和弹性扩容,我们就可以采用阿里云OSS。

1、开通服务(免费开通)

img

img

2、Bucket 库

  1. 点击创建Bucket
  2. 填写Bucket名称及区域
    1. 注:我这里区域选的是杭州,因为当时买服务器的时候,我是选的杭州区域,赠送的OSS包月资源包,当然也可以按流量计费,个人测试的话几块钱可以搞定。

img

3、注意:使用子权限——安全

  1. 点击访问控制
  2. 创建用户
  3. 创建用户组
  4. 用户组权限设置
  5. 将用户添加到用户组
  6. 保存账户信息

img

img

img

img

4、测试API

  1. 找到官方文档
  2. 测试

img

img

package com.coding.aliyun;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.ObjectMetadata;
import org.junit.Test;
 
import java.io.*;

// 详细步骤请参照官方文档,详细步骤请参照官方文档,详细步骤请参照官方文档
public class OSSTest {
    // Endpoint以杭州为例,其它Region请按实际情况填写。
    String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    String accessKeyId = "LTAI4Fcy4XxxxxxQR4";
    String accessKeySecret = "spI0CUXTDxxxxxxxYsf4lmIaUdrIu";
    String bucketName = "vin955";

    @Test
    public void testCreate(){
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
 
        boolean exists = ossClient.doesBucketExist(bucketName);

        if (exists == false) { //判定是否存在此存储空间
            // 创建存储空间。
            ossClient.createBucket(bucketName);
        }
 
        // 设置存储空间的访问权限为私有。
        ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);

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

    @Test
    public void testCreate2(){
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 上传文件流。
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream("C:\\Users\\heng\\Desktop\\ava.png");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        ossClient.putObject(bucketName, "ava/aaa.png", inputStream);

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

    @Test
    public void testCreate3() throws IOException {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        String objectName = "ava/aaa.png";

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

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

    @Test
    public void testCreate4() throws IOException {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        
        String objectName = "ava/aaa.png";
        // 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
        ossClient.deleteObject(bucketName, objectName);
        ossClient.shutdown();
    }
}
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐