0


SpringBoot整合阿里云OSS文件存储解决方案

🧑‍💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:SpringBoot实战


系列文章目录

以下是专栏部分内容,更多内容请前往专栏查看!

标题一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码)一张思维导图带你学会Springboot创建全局异常、自定义异常一张思维导图带你打通SpringBoot自定义拦截器的思路28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈一张思维导图带你学会SpringBoot、Vue前后端分离项目线上部署一张流程图带你学会SpringBoot结合JWT实现登录功能一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件一张思维导图带你学会使用SpringBoot异步任务实现下单校验库存一张思维导图带你学会SpringBoot使用AOP实现日志管理功能

在这里插入图片描述


专栏推荐

  • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
  • 专门为RabbitMQ入门打造的专栏,持续更新中。。。。。。。。链接>>>>>>>《图解RabbitMQ》

文章目录

🌟前言

对于项目中的文件存储有两张方案,一种是存储在项目中,另一种则是采用分布式存储。第一种解决方案,随着文件数量越来越多,对于文件上传下载的带宽有影响并且对于以后存储的扩容有很大的不便性。本文来说一张分布式存储中的云厂商文件系统解决方案,有关于阿里云OSS文件上传的使用。

🌟介绍

官网:https://www.aliyun.com/product/oss?utm_content=se_1014317304
上述是官网地址,没有用过的,可以申请三个月的体验期。

它是具有与平台无关的Restful api接口。任何应用、时间、语言都可以访问。并且分为多种存储类型:标准存储类型、低频访问类型、归档访问类型、冷归档访问类型。其存储类型的数据热度从大到小一次为:标准、低频、归档、冷归档。

🌟准备

1.创建bucket。这里要注意读写权限选择公共读。这里截图截错了。
在这里插入图片描述
2.创建用户RAM权限。

注意复制key,只会出现一次


在这里插入图片描述

🌟引入依赖

<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency>
如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖
<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><!-- no more than 2.3.3--><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.3</version></dependency>

🌟配置文件

进入实例查看endpoint:
在这里插入图片描述

aliyun:oss:endpoint: oss-cn-beijing.aliyuncs.com
    access-key-id: 你复制的accessID
    access-key-secret: 你复制的keyScret
    bucketname: 你创建的buckert名称

🌟配置类

创建OSS配置类,读取配置文件中的内容。

@ConfigurationProperties(prefix ="aliyun.oss")@Configuration@DatapublicclassOssConfig{privateString endpoint;privateString accessKeyId;privateString accessKeySecret;privateString bucketName;}

🌟文件上传组件-service层

上传流程:采用multipartFile。

  1. 读取OSSConfig配置类中的配置。
  2. 根据读取到的endpoint、accesskeyID、accessScret创建OSS客户端实例Ossclient。
  3. 配置实例参数。
  4. 获取上传的文件名、拓展名;定义上传后的文件名。
  5. 拼接路径
  6. 返回上传后的路径地址。
@AutowiredprivateOSSConfig ossConfig;/**
     * oss上传文件
     * 1.创建oss客户端实例
     * 2.配置实例参数
     * 3.拼接路径
     * @param file
     * @return
     */@OverridepublicStringuploadFile(MultipartFile file){String endPoint=ossConfig.getEndpoint();String accessKeyId=ossConfig.getAccessKeyId();String accessKeyScret=ossConfig.getAccessKeySecret();String bucketName= ossConfig.getBucketName();//创建ossClient实例OSS ossClient=newOSSClientBuilder().build(endPoint,accessKeyId,accessKeyScret);//拼接路径String originFileName=file.getOriginalFilename();DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy/mm/dd");LocalDateTime localDateTime=LocalDateTime.now();//根据日期分类文件夹String folderName=dtf.format(localDateTime);//新文件名String newFileName=CommonUtil.getRandom(4);//获取拓展名String extension=originFileName.substring(originFileName.lastIndexOf("."));String newFile="user/"+folderName+"/"+newFileName+extension;//推送try{PutObjectResult result = ossClient.putObject(bucketName, newFile, file.getInputStream());if(result!=null){return"https://"+endPoint+"."+bucketName+"."+"/"+newFile;}}catch(IOException e){thrownewSelfException(GlobalExceptionEnum.FILE_UPLOAD_ERROR);}finally{
            ossClient.shutdown();}returnnull;}

🌟上传文件接口

/**
     * 头像上传
     * @param file 上传的文件
     * @return
     */@ApiOperation("头像上传")@PostMapping("upload")publicJsonResultupload(@ApiParam(value ="文件")@RequestPart(value ="file")MultipartFile file){String path = fileService.uploadFile(file);if(StringUtils.isBlank(path)){returnJsonResult.exceptionResponse(GlobalExceptionEnum.FILE_UPLOAD_ERROR);}returnJsonResult.success("上传成功",path);}

🌟写在最后

有关于SpringBoot整合阿里云OSS实现文件上传介绍到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


请添加图片描述

标签: spring boot 后端

本文转载自: https://blog.csdn.net/2302_79094329/article/details/133433695
版权归原作者 DaenCode 所有, 如有侵权,请联系我们删除。

“SpringBoot整合阿里云OSS文件存储解决方案”的评论:

还没有评论