一、阿里云对象存储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服务开通相关推荐

  1. 小白篇:阿里云 对象存储 OSS

    阿里云 对象存储 OSS   为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS. 1.打开阿里云官方网站:https://www.aliyun.com/ 2.注册阿里云账 ...

  2. 谷粒学苑项目实战(九):实现阿里云对象存储OSS功能

    目录 一.开通阿里云对象存储OSS 二.创建bucket 三.创建操作阿里云OSS许可证 四.用代码实现头像上传功能 五.引入相关依赖 六.创建properties配置文件 七.创建主启动类 八.启动 ...

  3. spring boot上传阿里云对象存储OSS快速上手(一、控制台简介)

    代码实现请看下一篇: spring boot上传阿里云对象存储OSS快速上手(二.代码实现,复制粘贴可用) 简介: 1.阿里云对象存储OSS其实就是一个文件存储的服务 2.在我们的开发过程中会遇到类似 ...

  4. 阿里云个人网盘,阿里云对象存储OSS创建个人网盘

    随着人们个人数据也越来越多,云盘是一个非常好的存储工具,但也有一些坑爹的情况,比如360云盘在16年不对个人开放了,百度网盘是个很好的选择,但是上传速度很快,下载非常慢. 其实我们也可以利用阿里云对象 ...

  5. 阿里云对象存储OSS入门使用

    阿里云对象存储OSS入门使用 数据,文件的存储: 数据(MySQL) 数据(MySQL)+ 文件(本地:IO流) 数据(MySQL)+ 缓存(Redis)+文件(服务器集群上,fastDFS(集群), ...

  6. 阿里云对象存储OSS打造私人图床私人云存储(1年仅9元)

    阿里云对象存储OSS打造私人图床&私人云存储(1年仅9元) 阿里云对象存储OSS(Object Storage Service)是一款海量.安全.低成本.高可靠的云存储服务,提供99.9999 ...

  7. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  8. 开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。

    一.背景 阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用.在使用过程中难免会遇到误操作.程序 Bug.覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况 ...

  9. 阿里云对象存储OSS存储照片

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 概述 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可 ...

最新文章

  1. GPUimage实时滤镜的实现
  2. 视频驱动V4L2子系统驱动架构 - ioctl
  3. python写入一个文件之前可以不打开_如何用python实现真正的打开和关闭文件
  4. 过年前谈个恋爱很过分吗?
  5. ES6-函数中new.target 方法
  6. 【Java】使用MapReduce程序统计PV数量
  7. (转)JVM中的OopMap(zz)
  8. HDU4565(SummerTrainingDay05-C 矩阵快速幂)
  9. MVC案例之DAO层实现
  10. 158.导出northwind中employees的图像
  11. STM32入门:STM32F401CDU6库函数工程文件搭建
  12. 以衍复为例,聊聊当下的沪深300指数增强
  13. matlab PTB 学习笔记01——运行前准备
  14. 保姆级上云教程:购买百度云BCC服务器以及之后的一些注意事项
  15. lombok get/set 方法未生效,解决办法
  16. c# 获取照片的经纬度和时间
  17. QQ\微信等聊天记录备份与恢复
  18. 1.基于51单片机的蓝牙手机遥控小车
  19. IT管理体系——战略、管理和服务
  20. 提交给移动三个wap游戏,终于通过了一个

热门文章

  1. JS - 在html页面实现打印功能
  2. 投资理财-大跌怎么操作?
  3. mysql数据库怎么保存pdf文件_使用来自mysql数据库的图像生成PDF文件
  4. EXCEL模糊查找而不是精确查找,如何在多个单元格内查询是否包含某个字符? 不用find(),而用countif(,“*“F3“*“)
  5. 易语言教程数组删除成员和删除指定成员
  6. 激光打印机的硒鼓寿命及加分量
  7. 2001-2009年日语能力考试(三级) 真题听力
  8. 十进制转换为二进制的几种方法
  9. Reading Task 2 —— by12061154Joy
  10. 百度视频进军虚拟现实内容 VR频道震撼上线