前置知识
我们知道一般的热点数据我们直接存到数据库,但是类似一些表格模板,附件等静态资源放在哪里呢?
- 数据库
- 数据库 + 本地文件(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.访问控制

添加用户组–>创建用户–>添加用户到用户组–>分配用户组权限–>保存账号信息
其实就像我们的系统的权限,角色和用户的关系,某些用户是某些角色,某些角色就具有某些分配好的权限!
具体步骤截图如下:



记录下


测试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"; String accessKeyId = "LTAI4GKkPcWRY6zDgxBwgjaS"; String accessKeySecret = "fvQ0rtW2ezAS4jiMCjIp7JrzKSCmPJ"; String bucketName = "oss-study01";
@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); 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);
ObjectListing objectListing = ossClient.listObjects(bucketName); 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(); } }
|
好了,后面我们就可以用接口调用,完成我们文件的上传和下载了。是不是很简单?赶快试试吧;加油,奥利给!