目录
1. 阿里云OSS对象存储
我的解释肯定不够规范,来看看百度词条的解释
对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。
就像文件一样,对象包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。
2. SDK和官方文档
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
SDK版本及源码参考GitHub阿里云OSS SDK源码
官方文档可以查阅阿里云OSS SDK官方文档
详细示例可以参考阿里云OSS SDK快速入门
3. endpoint,accessKeyId ,accessKeySecret
- endpoint:对象存储有地域概念,如我成都区域,则endpoint就为https://oss-cn-chengdu.aliyuncs.com
- aacessKeyId,accessKeySecret:阿里云登录后访问AccessKey管理创建使用,建议配合子账户使用
4. 创建bucket
bucket我认为可以理解类似于文件存储中的磁盘分区概念,只不过这里的磁盘是OSS,没有容量大小概念
OSS client= new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
CreateBucketRequest createBucketRequest = new CreateBucketRequest("examplebucket");
// 如果创建存储空间的同时需要指定存储类型和数据容灾类型, 请参考如下代码。
// 此处以设置存储空间的存储类型为标准存储为例介绍。
//createBucketRequest.setStorageClass(StorageClass.Standard);
// 数据容灾类型默认为本地冗余存储,即DataRedundancyType.LRS。如果需要设置数据容灾类型为同城冗余存储,请设置为DataRedundancyType.ZRS。
//createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS);
// 设置存储空间的权限为公共读,默认为私有。
//createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
// 创建存储空间。
client.createBucket(createBucketRequest);
5. 上传文件
client.putObject("my-bucket","filename",new FileInputStream("path");
// 这里pubObject有多个重载方法,可以是IO流,File对象,URL,PutObjectRequest等等,具体可翻阅源码。
6. 下载文件
OSSObject obj= client.getObject("bucket","filename");
InputStream stream=obj.getObjectContent()
7. 删除文件
client.deleteObject("bucket","filename");
8. 设置文件访问权限ACL
client.setObjectAcl("bucket","filename", CannedAccessControlList.PublicRead);
访问权限共有四个级别,如下
访问权限 | 描述 | 访问权限值 |
---|---|---|
继承Bucket | 文件遵循存储空间的访问权限。 | CannedAccessControlList.Default |
私有 | 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 | CannedAccessControlList.Private |
公共读 | 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 | CannedAccessControlList.PublicRead |
公共读写 | 所有用户都有该文件的读写权限。请谨慎使用该权限。 | CannedAccessControlList.PublicReadWrite |
9. 关于文件名中的斜杠(/)和文件夹说明
对象存储没有目录概念,所有文件全部平级,但是OSS文件命名允许使用斜杠(/),在UI体现上也是文件夹,但是不要被误导了,这不是文件夹!,如果里面的文件删除,这个我们看见的文件夹也会消失,并且我们是不能直接访问这个文件夹,只能访问文件!
10. 最后,最重要的一点
扫码关注公众号【暴走的怪兽君】,常更新Java干货资讯,免费提供大量教程和工具下载。