阿里云对象存储OSS服务开通
一、阿里云对象存储OSS服务开通
1、开通“对象存储OSS”服务
2、进入管理控制台
二、控制台使用
1、创建Bucket
命名:srb-file
读写权限:公共读
2、上传默认头像
创建文件夹avatar,上传默认的用户头像
三、使用RAM子用户
1、进入子用户管理页面
2、添加用户
3、获取子用户key
AccessKeyId, AccessKeySecret
4、设置用户权限
AliyunOSSFullAccess
三、快速入门
1.创建maven工程
aliyun-oss
<dependencies><!--aliyunOSS--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>
2.编写测试类
跟多api使用参考文档:https://help.aliyun.com/document_detail/145210.html
package com.llp.oss;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.*;
import org.junit.Test;import java.util.Date;public class OSSTest {// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。String endpoint = "oss-cn-beijing.aliyuncs.com";// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。String accessKeyId = "你的accessKeyId";String accessKeySecret = "你的accessKeySecret";String bucketName = "你的bucketName";@Testpublic void testInit() {OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 关闭OSSClient。ossClient.shutdown();}//创建bucket@Testpublic void testCreateBucketRequest() {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 创建CreateBucketRequest对象。CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);// 如果创建存储空间的同时需要指定存储类型和数据容灾类型, 请参考如下代码。// 此处以设置存储空间的存储类型为标准存储为例介绍。//createBucketRequest.setStorageClass(StorageClass.Standard);// 数据容灾类型默认为本地冗余存储,即DataRedundancyType.LRS。如果需要设置数据容灾类型为同城冗余存储,请设置为DataRedundancyType.ZRS。//createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS);// 设置存储空间的权限为公共读,默认为私有。//createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);// 创建存储空间。ossClient.createBucket(createBucketRequest);// 关闭OSSClient。ossClient.shutdown();}//判断bucket是否存在@Testpublic void testDoesBucketExist(){// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 判断存储空间examplebucket是否存在。如果返回值为true,则存储空间存在,否则存储空间不存在。boolean exists = ossClient.doesBucketExist(bucketName);System.out.println(exists);// 关闭OSSClient。ossClient.shutdown();}//获取存储空间的地域:oss-cn-beijing@Testpublic void testGetBucketLocation(){// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);String location = ossClient.getBucketLocation(bucketName);System.out.println(location);// 关闭OSSClient。ossClient.shutdown();}//获取详情信息@Testpublic void testGetBucketInfo(){// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 存储空间的信息包括地域(Region或Location)、创建日期(CreationDate)、拥有者(Owner)等。// 填写Bucket名称,例如examplebucket。BucketInfo info = ossClient.getBucketInfo(bucketName);// 获取地域。String location = info.getBucket().getLocation();// 获取创建日期。Date creationDate = info.getBucket().getCreationDate();// 获取拥有者信息。Owner owner = info.getBucket().getOwner();// 获取容灾类型。DataRedundancyType dataRedundancyType = info.getDataRedundancyType();System.out.println(location);System.out.println(creationDate);System.out.println(owner);System.out.println(dataRedundancyType);// 关闭OSSClient。ossClient.shutdown();}//设置bucket访问权限@Testpublic void testSetBucketAcl(){// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 设置存储空间的访问权限为私有。ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);// 关闭OSSClient。ossClient.shutdown();}}
四、项目中的使用
<!--lombok用来简化实体类:需要安装lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--aliyunOSS--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId></dependency><!-- 日期工具栏依赖 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency><!--让自定义的配置在application.yaml进行自动提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
aliyun:oss:endpoint: oss-cn-beijing.aliyuncs.comkeyId: 你的accessKeyIdkeySecret: 你的accessKeySecretbucketName: 你的bucketName
配置类
@Data
@Component
@ConfigurationProperties("aliyun.oss")
public class OssProperties implements InitializingBean {private String endpoint;private String keyId;private String keySecret;private String bucketName;public static String ENDPOINT;public static String KEY_ID;public static String KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() throws Exception {this.ENDPOINT = endpoint;this.KEY_ID = keyId;this.KEY_SECRET = keySecret;this.BUCKET_NAME = bucketName;}}
控制层
@Api(tags = "阿里云文件管理")
//@CrossOrigin //跨域
@RestController
@RequestMapping("/api/oss/file")
public class FileController {@Resourceprivate FileService fileService;/*** 文件上传*/@ApiOperation("文件上传")@PostMapping("/upload")public R upload(@ApiParam(value = "文件", required = true)@RequestParam("file") MultipartFile file,@ApiParam(value = "模块", required = true)@RequestParam("module") String module) {try {String uploadUrl = fileService.upload(file.getInputStream(), module, file.getOriginalFilename());return R.ok().message("文件上传成功").data("url", uploadUrl);} catch (IOException e) {throw new BusinessException(ResponseEnum.UPLOAD_ERROR, e);}}@ApiOperation("文件删除")@DeleteMapping("/remove")public R removeFile(@ApiParam(value = "文件地址",required = true)@RequestParam("url") String url){fileService.removeFile(url);return R.ok().message("删除文件成功");}}
文件的上传和文件的删除我们根据文件规则进行生成和删除即可
service
@Service
public class FileServiceImpl implements FileService {@Overridepublic String upload(InputStream inputStream, String module, String fileName) {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(OssProperties.ENDPOINT, OssProperties.KEY_ID, OssProperties.KEY_SECRET);String bucketName = OssProperties.BUCKET_NAME;//判断存储空间是否存在boolean exists = ossClient.doesBucketExist(bucketName);if (!exists) {//不存在则创建CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);ossClient.createBucket(createBucketRequest);}//文件路径处理 llp/2021/12/25/uuid.jpgString folder = new DateTime().toString("/yyyy/MM/dd/");fileName = UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf("."));String filePath = module + folder + fileName;// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。// 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。ossClient.putObject(bucketName, filePath, inputStream);// 关闭OSSClient。ossClient.shutdown();//阿里云文件绝对路径return "https://" + OssProperties.BUCKET_NAME + "." + OssProperties.ENDPOINT + "/" + filePath;}@Overridepublic void removeFile(String url) {// 填写文件完整路径。文件完整路径中不能包含Bucket名称。//https://llp001.oss-cn-beijing.aliyuncs.com/test/2021/12/25/4dac5149-bd40-4a72-ab6c-569f97e194df.jpg//test/2021/12/25/4dac5149-bd40-4a72-ab6c-569f97e194df.jpgString host = "https://"+OssProperties.BUCKET_NAME+"."+OssProperties.ENDPOINT+"/";String objectName = url.substring(host.length());// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(OssProperties.ENDPOINT, OssProperties.KEY_ID, OssProperties.KEY_SECRET);// 删除文件或目录。如果要删除目录,目录必须为空。ossClient.deleteObject(OssProperties.BUCKET_NAME, objectName);// 关闭OSSClient。ossClient.shutdown();}
}
阿里云对象存储OSS服务开通相关推荐
- 小白篇:阿里云 对象存储 OSS
阿里云 对象存储 OSS 为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS. 1.打开阿里云官方网站:https://www.aliyun.com/ 2.注册阿里云账 ...
- 谷粒学苑项目实战(九):实现阿里云对象存储OSS功能
目录 一.开通阿里云对象存储OSS 二.创建bucket 三.创建操作阿里云OSS许可证 四.用代码实现头像上传功能 五.引入相关依赖 六.创建properties配置文件 七.创建主启动类 八.启动 ...
- spring boot上传阿里云对象存储OSS快速上手(一、控制台简介)
代码实现请看下一篇: spring boot上传阿里云对象存储OSS快速上手(二.代码实现,复制粘贴可用) 简介: 1.阿里云对象存储OSS其实就是一个文件存储的服务 2.在我们的开发过程中会遇到类似 ...
- 阿里云个人网盘,阿里云对象存储OSS创建个人网盘
随着人们个人数据也越来越多,云盘是一个非常好的存储工具,但也有一些坑爹的情况,比如360云盘在16年不对个人开放了,百度网盘是个很好的选择,但是上传速度很快,下载非常慢. 其实我们也可以利用阿里云对象 ...
- 阿里云对象存储OSS入门使用
阿里云对象存储OSS入门使用 数据,文件的存储: 数据(MySQL) 数据(MySQL)+ 文件(本地:IO流) 数据(MySQL)+ 缓存(Redis)+文件(服务器集群上,fastDFS(集群), ...
- 阿里云对象存储OSS打造私人图床私人云存储(1年仅9元)
阿里云对象存储OSS打造私人图床&私人云存储(1年仅9元) 阿里云对象存储OSS(Object Storage Service)是一款海量.安全.低成本.高可靠的云存储服务,提供99.9999 ...
- 阿里云对象存储OSS与文件存储NAS的区别
一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...
- 开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。
一.背景 阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用.在使用过程中难免会遇到误操作.程序 Bug.覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况 ...
- 阿里云对象存储OSS存储照片
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 概述 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可 ...
最新文章
- GPUimage实时滤镜的实现
- 视频驱动V4L2子系统驱动架构 - ioctl
- python写入一个文件之前可以不打开_如何用python实现真正的打开和关闭文件
- 过年前谈个恋爱很过分吗?
- ES6-函数中new.target 方法
- 【Java】使用MapReduce程序统计PV数量
- (转)JVM中的OopMap(zz)
- HDU4565(SummerTrainingDay05-C 矩阵快速幂)
- MVC案例之DAO层实现
- 158.导出northwind中employees的图像
- STM32入门:STM32F401CDU6库函数工程文件搭建
- 以衍复为例,聊聊当下的沪深300指数增强
- matlab PTB 学习笔记01——运行前准备
- 保姆级上云教程:购买百度云BCC服务器以及之后的一些注意事项
- lombok get/set 方法未生效,解决办法
- c# 获取照片的经纬度和时间
- QQ\微信等聊天记录备份与恢复
- 1.基于51单片机的蓝牙手机遥控小车
- IT管理体系——战略、管理和服务
- 提交给移动三个wap游戏,终于通过了一个
热门文章
- JS - 在html页面实现打印功能
- 投资理财-大跌怎么操作?
- mysql数据库怎么保存pdf文件_使用来自mysql数据库的图像生成PDF文件
- EXCEL模糊查找而不是精确查找,如何在多个单元格内查询是否包含某个字符? 不用find(),而用countif(,“*“F3“*“)
- 易语言教程数组删除成员和删除指定成员
- 激光打印机的硒鼓寿命及加分量
- 2001-2009年日语能力考试(三级) 真题听力
- 十进制转换为二进制的几种方法
- Reading Task 2 —— by12061154Joy
- 百度视频进军虚拟现实内容 VR频道震撼上线