阿里云OSS SDk实践篇

阿里云OSS SDk实践篇

viEcho Lv5

前置知识

我们知道一般的热点数据我们直接存到数据库,但是类似一些表格模板,附件等静态资源放在哪里呢?

  • 数据库
  • 数据库 + 本地文件(IO流)
  • 数据库 + 缓存 + 文件服务器(Hdfs 、fastDFS、服务器集群)
  • 数据库 + 缓存 + 文件存储(对象存储服务OSS)

因为阿里云提供了各种常用语言的SDK,所以进行文件的存储就变得十分简单,那本文就来介绍下阿里云的对象存储OSS使用。

开通OSS服务

搜索后,购买直接就可以使用,它是按流量计算费用的,话说我们买个10块钱的足够我们基本的学习使用了,不够了再充值嘛!我这里因为用的就是阿里云服务器,所以好像是赠送了40G的存储,具体也懒的去了解,反正没要我再交钱就是。

了解阿里云OSS

通过了解它的官方文档,我们基本可以知道阿里云OSS提供了面向各种常用语言的SDk,通过这些SDK我们基本可以知道如何使用了。

点击JAVA SDK快速入门我们可以看到对应的maven 工程示例;这里自己点进去了解即可!

题外话: 后面对于其他东西的学习,个人建议都是先找官方文档了解,至于本篇博客个人也只是做个笔记,记录下简单的使用,肯定不如官网的全面。

快速上手

1.创建Bucket

如果你听了我的建议,了解过JAVA SDk 中的工程例子,我想你应该知道要使用OSS 需要4个参数:

  • endpoint
  • AccessKeyID
  • AccessKeySecret
  • bucketName

这里我们先记录下 bucketName: oss-study01;endpoint:oss-cn-beijing.aliyuncs.com

2.创建文件夹

创建一个存放图片的文件夹images

3.上传一张图片测试

注意:是点击进此文件后再上传

这里我们选择单个文件的权限是公共读,当然你也可以通过修改整个文件的权限,目前此文件夹我们没修改就是默认的私有的!

4.访问控制

添加用户组–>创建用户–>添加用户到用户组–>分配用户组权限–>保存账号信息

其实就像我们的系统的权限,角色和用户的关系,某些用户是某些角色,某些角色就具有某些分配好的权限!

具体步骤截图如下:

记录下

  • AccessKeyID: LTAI4FoYHgbk2y3woYH191Ys

  • AccessKeySecret:FVZzvz4G9e39ako5vVMASYryrbpnJu

测试SDK

1.创建微服务,引入阿里OSS依赖

1
2
3
4
5
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.0</version>
</dependency>

2. 测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package com.coding.aliyunoss;

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.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import org.junit.Test;
import java.io.File;

public class OSSTest {

String endpoint = "oss-cn-beijing.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用RAM账号进行API访问或日常运维,
// 请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4GKkPcWRY6zDgxBwgjaS";
String accessKeySecret = "fvQ0rtW2ezAS4jiMCjIp7JrzKSCmPJ";
String bucketName = "oss-study01";

// 判断是否 bucketName,如果不存在就创建,修改权限

// 创建oss 实例
@Test
public void testCreate(){
// 对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 方法
ossClient.createBucket(bucketName);
// 关闭对象
ossClient.shutdown();
}

// 判断当前实例是否存在
@Test
public void testExist(){
// 对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 方法
boolean exist = ossClient.doesBucketExist(bucketName);
System.out.println(exist);
// 关闭对象
ossClient.shutdown();
}

// 修改权限 公共读
@Test
public void testUpdate(){
// 对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 方法 (修改已经有的,创建新的)
ossClient.setBucketAcl(bucketName,CannedAccessControlList.PublicRead);
// 关闭对象
ossClient.shutdown();
}

// 上传文件

// 上传文件流。
@Test
public void testFileUpload(){
// 对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 方法 (修改已经有的,创建新的)
// 上传到 oss 后需要一个文件名(保证唯一 /2020/4/1/xxxxxxxx.jpg)!
String objectName = "images/default.jpg";
ossClient.putObject(bucketName, objectName, new File("C:\\Users\\Administrator\\Desktop\\dafault.jpg"));

// 关闭对象
ossClient.shutdown();
}


// 下载文件
@Test
public void testDownload(){
// 对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 方法 (修改已经有的,创建新的)
String objectName = "images/default.jpg";
ossClient.getObject(new GetObjectRequest(bucketName,objectName),new File("a.jpg"));

// 关闭对象
ossClient.shutdown();
}

// 查看文件列表
@Test
public void testShowList(){
// 对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 方法 (修改已经有的,创建新的)
// ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。
ObjectListing objectListing = ossClient.listObjects(bucketName);
// objectListing.getObjectSummaries获取所有文件的描述信息。
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey() + " " +
"(size = " + objectSummary.getSize() + ")");
}

// 关闭对象
ossClient.shutdown();
}


// 删除文件
@Test
public void testDeleted(){
// 对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 方法 (修改已经有的,创建新的)
String objectName = "images/default.jpg";
ossClient.deleteObject(bucketName,objectName);
// 关闭对象
ossClient.shutdown();
}
}

好了,后面我们就可以用接口调用,完成我们文件的上传和下载了。是不是很简单?赶快试试吧;加油,奥利给!

  • Title: 阿里云OSS SDk实践篇
  • Author: viEcho
  • Created at : 2021-04-23 19:55:09
  • Updated at : 2024-01-18 15:00:03
  • Link: https://viecho.github.io/2021/0423/aliyun-oss-sdk.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
阿里云OSS SDk实践篇