阿里云OSS存储入门学习

1. 开通对象存储OSS服务

开通对象存储OSS服务的步骤如下:申请阿里云账号->实名认证->开通对象存储OSS服务->进入管理控制台.
在这里插入图片描述

2. 控制台操作

(1)首先创建Bucket
在这里插入图片描述
bucket名称:subtle-chat,设置读写权限公共读。
在这里插入图片描述

(2)新建目录用于存储不同类型的文件
在这里插入图片描述

3. 创建RAM子用户

(1)进入子用户管理页面

在这里插入图片描述

在这里插入图片描述

(2)添加用户
进入RAM访问控制后台创建新用户
在这里插入图片描述
(3)获取子用户key

完成用户创建之后,获取AccessKeyId, AccessKeySecret,并保存起来。因为关闭界面后无法再次获取。
在这里插入图片描述
(4)设置用户权限

设置用户权限,添加AliyunOSSFullAccess(管理对象存储服务(OSS)权限)的权限

在这里插入图片描述

在这里插入图片描述

4. SDK学习

进入OSS学习路径界面:https://help.aliyun.com/learn/learningpath/oss.html
在这里插入图片描述

4.1 创建测试项目

创建Maven项目,并配置pom,添加以下依赖:

    <dependencies>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

4.2 测试使用

4.2.1 创建Bucket

public class OSSTest {
    
    

    // Endpoint以杭州为例,其它Region请按实际情况填写。
    String endpoint = "ttp://oss-cn-beijing.aliyuncs.com";
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    String accessKeyId = "your accessKeyId";
    String accessKeySecret = "your accessKeySecret";
    String bucketName = "subtle-chat";

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

        // 创建CreateBucketRequest对象。
        CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);

        // 创建存储空间。
        ossClient.createBucket(createBucketRequest);

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

4.2.2 判断bucket是否存在

@Test
public void testExist() {
    
    

    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

    boolean exists = ossClient.doesBucketExist(bucketName);
    System.out.println(exists);

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

4.2.3 设置bucket访问权限

@Test
public void testAccessControl() {
    
    

    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

    // 设置存储空间的访问权限为:公共读。
    ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);

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

4.2.4 文件管理

上传文件demo代码:

    @Test
    public void testFileUpload() {
    
    
        // 填写文件名。文件名包含路径,不包含Bucket名称。例如exampledir/exampleobject.txt。
        //group-chat对应bucket中的目录名
        String objectName = "group-chat/exampleobject.txt";
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
    
    

            String content = "Hello OSS";
            ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
        } catch (OSSException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            // 关闭OSSClient。
            ossClient.shutdown();
        }
    }

下载文件demo代码:

   @Test
    public void testFileDownload() {
    
    
        // 填写文件名。文件名包含路径,不包含Bucket名称。例如exampledir/exampleobject.txt。
        //group-chat对应bucket中的目录名
        String objectName = "group-chat/exampleobject.txt";
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
    
    

            // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
            OSSObject ossObject = ossClient.getObject(bucketName, objectName);
            // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
            InputStream content = ossObject.getObjectContent();
            if (content != null) {
    
    
                BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                while (true) {
    
    
                    String line = reader.readLine();
                    if (line == null) break;
                    System.out.println("\n" + line);
                }
                // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
                content.close();
            }
        } catch (OSSException | IOException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            // 关闭OSSClient。
            ossClient.shutdown();
        }
    }

执行结果:
在这里插入图片描述

删除文件demo代码:

    @Test
    public void testFileDelete() {
    
    
        // 填写文件名。文件名包含路径,不包含Bucket名称。例如exampledir/exampleobject.txt。
        //group-chat对应bucket中的目录名
        String objectName = "group-chat/exampleobject.txt";
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
    
    

            // 删除文件。
            ossClient.deleteObject(bucketName, objectName);
        } catch (OSSException e){
    
    
            e.printStackTrace();
        } finally {
    
    
            // 关闭OSSClient。
            ossClient.shutdown();
        }
    }

学习更多:https://help.aliyun.com/document_detail/32007.html

猜你喜欢

转载自blog.csdn.net/huangjhai/article/details/121732827