阿里云对象存储OSS入门使用 https://www.cnblogs.com/ShallowPen/p/12717243.html
数据,文件的存储:
- 数据(MySQL)
- 数据(MySQL)+ 文件(本地:IO流)
- 数据(MySQL)+ 缓存(Redis)+文件(服务器集群上,fastDFS(集群),Hdfs(大数据))
- 数据(MySQL)+ 缓存(Redis)+文件(OSS)
OSS 就是为了解决海量数据存储和弹性扩容,我们就可以采用阿里云OSS。
1、开通服务(免费开通)
2、Bucket 库
- 点击创建Bucket
- 填写Bucket名称及区域
- 注:我这里区域选的是杭州,因为当时买服务器的时候,我是选的杭州区域,赠送的OSS包月资源包,当然也可以按流量计费,个人测试的话几块钱可以搞定。
3、注意:使用子权限——安全
- 点击访问控制
- 创建用户
- 创建用户组
- 用户组权限设置
- 将用户添加到用户组
- 保存账户信息
4、测试API
- 找到官方文档
- 测试
1 package com.coding.aliyun;
2
3 import com.aliyun.oss.OSS;
4 import com.aliyun.oss.OSSClientBuilder;
5 import com.aliyun.oss.model.CannedAccessControlList;
6 import com.aliyun.oss.model.GetObjectRequest;
7 import com.aliyun.oss.model.ObjectMetadata;
8 import org.junit.Test;
9
10 import java.io.*;
11
12 // 详细步骤请参照官方文档,详细步骤请参照官方文档,详细步骤请参照官方文档
13 public class OSSTest {
14 // Endpoint以杭州为例,其它Region请按实际情况填写。
15 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
16 // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
17 String accessKeyId = "LTAI4Fcy4XxxxxxQR4";
18 String accessKeySecret = "spI0CUXTDxxxxxxxYsf4lmIaUdrIu";
19 String bucketName = "vin955";
20
23 @Test
24 public void testCreate(){
25 // 创建OSSClient实例。
26 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
27
28 boolean exists = ossClient.doesBucketExist(bucketName);
29
30 if (exists == false) { //判定是否存在此存储空间
31 // 创建存储空间。
32 ossClient.createBucket(bucketName);
33 }
34
35 // 设置存储空间的访问权限为私有。
36 ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
37
38 // 关闭OSSClient。
39 ossClient.shutdown();
40 }
41
42 @Test
43 public void testCreate2(){
44 // 创建OSSClient实例。
45 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
46
47 // 上传文件流。
48 InputStream inputStream = null;
49 try {
50 inputStream = new FileInputStream("C:\\Users\\heng\\Desktop\\ava.png");
51 } catch (FileNotFoundException e) {
52 e.printStackTrace();
53 }
54
55 ossClient.putObject(bucketName, "ava/aaa.png", inputStream);
56
57 // 关闭OSSClient。
58 ossClient.shutdown();
59 }
60
63 @Test
64 public void testCreate3() throws IOException {
65 // 创建OSSClient实例。
66 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
67
68 String objectName = "ava/aaa.png";
69
70 // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
71 // OSSObject ossObject = ossClient.getObject(bucketName, objectName);
72 ObjectMetadata ossObject = ossClient.getObject(new GetObjectRequest(bucketName, objectName),new File("a.png"));
73
74
75 // 关闭OSSClient。
76 ossClient.shutdown();
77 }
78
79
80 @Test
81 public void testCreate4() throws IOException {
82 // 创建OSSClient实例。
83 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
84
85
86 String objectName = "ava/aaa.png";
87 // 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
88 ossClient.deleteObject(bucketName, objectName);
89
90 ossClient.shutdown();
91 }
92
93 }