阿里云OSS分布式存储

目录

🧂1.OSS开通 

🌭2.头像上传整合OSS 

🚍2.1.引入依赖

🚍2.2添加配置

🚍2.3创建配置类

🚍2.4添加实现类 

🚍2.5controller调用接口 

🚍2.6postman测试 


 1.OSS开通 

  • 1.登录阿里云,搜索oss

  • 2.创建bucket 

RAM权限:

  • 阿里云用于各个产品的权限,基于RBAC模型,进行简单管理账号、统一分配权限、集中管控资源,从而建立安全、完善的资源控制体系。
  • 众多产品,一般采用子账号进行分配权限,防止越权攻击

  • 3.创建用户,为其分配权限
  •  4.确定之后发送验证码

  • 5.获取AccessKey ID  ,AccessKey Secret;只出现一次,务必粘贴复制

  • 6. 按需添加权限 

2.头像上传整合OSS 

官方参考文档:OSS官网手册

2.1.引入依赖

            <!--阿里云OSS--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency>

2.2添加配置

yml文件没有提示,不要考虑是不是错了

#阿里云OSS
aliyun:oss:#地域节点endpoint: access-key-id: access-key-Secret: bucket-name: hqdmdxz-user

2.3创建配置类

创建配置类,获取yml中的文件配置,注意@Value注解的使用

@Data
@Configuration
public class OssConfig {@Value("${aliyun.oss.endpoint}")private String endpoint;@Value("${aliyun.oss.access-key-id}")private String accessKeyId;@Value("${aliyun.oss.access-key-Secret}")private String accessKeySecret;@Value("${aliyun.oss.bucket-name}")private String bucketName;
}

2.4添加实现类 

  • 先上传文件,返回url地址,再和普通表单一并提交(推荐这种,更加灵活,失败率低)
  • 文件和普通表单一并提交(设计流程比较多,容易超时和失败)

注意:默认SpringBoot最大文件上传是1M,大家测试的时候注意一下

@Slf4j
@Service
public class FileServiceImpl implements FileService {@Autowiredprivate OssConfig ossConfig;/*** 上传头像** @param file* @return*/@Overridepublic String uploadUserImage(MultipartFile file) {//1.获取相关配置String bucketName = ossConfig.getBucketName();String endpoint = ossConfig.getEndpoint();String accessKeyId = ossConfig.getAccessKeyId();String accessKeySecret = ossConfig.getAccessKeySecret();//2.创建oss对象OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//3.获取原始文件名String originalFilename = file.getOriginalFilename();//4.获取当前时间LocalDateTime nowTime = LocalDateTime.now();//5.格式化的模板DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");//6.将当前日期格式化String formatTime = dateTimeFormatter.format(nowTime);//7.获取uuidString uuid = CommonUtil.generateUUID();//8.获取文件后缀.jpgString extension = originalFilename.substring(originalFilename.lastIndexOf("."));//9.拼装路径oos存储路径  user/2024/03/22/2131241215.jpgString fileName = "user/" + formatTime + "/" + uuid + extension;try {//10.上传到ossPutObjectResult putObjectResult = ossClient.putObject(bucketName, fileName, file.getInputStream());//11.返回拼装路径if (putObjectResult != null) {String imageUrl = "https://" + bucketName + "." + endpoint + "/" + fileName;return imageUrl;}} catch (IOException e) {log.error("文件上传失败:{}", e);} finally {//oss关闭,避免内存泄露ossClient.shutdown();}return null;}
}

2.5controller调用接口 

上传文件,调用接口实现类,返回图片地址

    @Autowiredprivate FileService fileService;/*** 上传头像** @return*/@ApiOperation("头像上传")@PostMapping("/upload")public JsonData uploadUserImage(@ApiParam(value = "文件上传", required = true)@RequestPart("file") MultipartFile file) {String imageUrl = fileService.uploadUserImage(file);if (imageUrl != null) {return JsonData.buildSuccess(imageUrl);}return JsonData.buildResult(CodeEnum.FILE_UPLOAD_USER_IMAGE_ERROR);}

2.6postman测试 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/283253.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Google XSS Game Level 6 通关方式

文章目录 链接&#xff1a;[Google XSS Game](#https://xss-game.appspot.com/)Level 6 - Follow the &#x1f407;思路1 &#xff08;当然&#xff0c;我使用这个方式没有成功&#xff0c;所以才来记录下&#xff09;解法2 【最简单的解法】需要注意的一个小问题 链接&#x…

Spring异步注解@Async线程池配置

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调…

基于“云”重构“百度云盘”

这一篇文章是和上一篇连着的哟&#xff01; # docker run -p 80:80 -d -v /data/owncloud/:/var/www/html owncloud 一、【安装完成】 二、【打开浏览器】 三、【回到这个熟悉的界面&#xff0c;掉。】 四、【上传文件】 试了可以看哇偶&#xff01;&#xff01;&#xff01…

Word为图表设置图注并在图表清单中自动生成

1如果需要自动插入题注&#xff0c;请不要自己为文件增加新的标题样式或删除自带的标题1样式 2章节大标题最好是标题1&#xff0c;2,3而不要设置标题一、二、三&#xff0c;否则图例在自动生成时会显示 图一 -1&#xff0c;调整起来会非常不方便 若实在要使用大写中文标题&…

Vue模块化开发步骤—遇到的问题—解决办法

目录 1.npm install webpack -g 2.npm install -g vue/cli-init 3.初始化vue项目 4.启动vue项目 Vscode初建Vue时几个需要注意的问题-CSDN博客 1.npm install webpack -g 全局安装webpack 直接命令提示符运行改指令会报错&#xff0c;operation not permitted 注意&#…

牛客NC101 压缩字符串(一)【简单 模拟 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/c43a0d72d29941c1b65c857d8ac9047e 思路 直接模拟参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值…

Node安装,nodejs详细安装步骤

什么是nodejs? 脚本语言需要一个解析器才能运行&#xff0c;JavaScript是脚本语言&#xff0c;在不同的位置有不一样的解析器&#xff0c;如写入html的js语言&#xff0c;浏览器是它的解析器角色。而对于需要独立运行的JS&#xff0c;nodejs就是一个解析器。 每一种解析器都是…

【基于skyent的热更思考】

基于skyent的热更思考 skynet-inject热更原理关键源码分析热更方式拓扑图注意事项 skynet-inject热更原理 inject是一个用于动态加载 Lua 代码文件并执行其中定义的函数的功能。可以在运行时动态加载 Lua 代码文件&#xff0c;然后调用其中定义的函数&#xff0c;通过修改模块…

欧科云链:2024将聚焦发展与安全,用技术助力链上数据安全和合规

近期&#xff0c;OpenAI和Web3.0两大新技术发展势头迅猛。OpenAI 再次引领AI领域的新浪潮&#xff0c;推出了创新的文本转视频模型——Sora&#xff0c;Sora 可以创建长达60 秒的视频&#xff0c;包含高度详细的场景、複杂的摄像机运动以及情感丰富角色&#xff0c;再次将AI 的…

Linux-生产者与消费者模型

文章目录 一、什么是生产者与消费者模型&#xff1f;二、示例模型示例模型介绍交易场所&#xff08;blockQueue&#xff09;消费者与生产者运行结果 总结 一、什么是生产者与消费者模型&#xff1f; 参照日常生活中&#xff0c;购买商品的人群可以被称之为消费者&#xff0c;生…

mongodb文档数据建模

基础建模 内嵌方法和数组方完成关系表述 内嵌一对一关系建模 数组内嵌一对N 关系建模 数组内嵌对象多对多关系建模 文档模型设计之二&#xff1a;工况细化 join 查询 不支持外键 设计模式集锦 版本迭代加schema_version 字段 频繁写入改为时间区间写入 聚合变预聚合方式 采用…

预约陪诊APP定制开发方案以及流程详解

随着医疗行业的快速发展&#xff0c;越来越多的人开始关注自己的健康问题。然而&#xff0c;在看病的过程中&#xff0c;很多人都会感到孤独和无助。为了解决这个问题&#xff0c;许多医疗机构和企业推出了预约陪诊APP,旨在为用户提供一个安全、便捷的陪伴服务。本文将详细介绍…

爱普生EPSON全新传感技术方案亮相高交会,创造新时代“精智生活”

2023年中国国际高新技术成果交易会在深圳福田会展中心盛大举行&#xff0c;是目前中国规模最大、最具影响力的科技类展会之一。爱普生作为始终坚持“科技本地化”战略的技术创新前沿企业参与此次展会&#xff0c;为中国用户带来爱普生电子元器件三款创新技术与四大成熟传感器解…

elk收集k8s微服务日志

一、前言 使用filebeat自动发现收集k8s的pod日志&#xff0c;这里分别收集前端的nginx日志&#xff0c;还有后端的服务java日志&#xff0c;所有格式都是用json格式&#xff0c;建议还是需要让开发人员去输出java的日志为json&#xff0c;logstash分割java日志为json格式&#…

SQLiteC/C++接口详细介绍sqlite3_stmt类(十二)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十一&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十三&#xff09; 48、sqlite3_stmt_isexplain sqlite3_stmt_is…

【前端寻宝之路】学习和总结HTML的标签属性

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-tgsZb9zTBxJHHYhD {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

深度学习:复杂工业场景下的复杂缺陷检测方法

摘要&#xff1a;在复杂的工业场景中&#xff0c;缺陷检测一直是一个重要而具有挑战性的任务。近年来&#xff0c;深度学习技术的快速发展为复杂工业场景下的缺陷检测提供了新的解决方案。本文将介绍深度学习在复杂工业场景下的复杂缺陷检测中的应用&#xff0c;并探讨其技术进…

vue2 脚手架

安装 文档&#xff1a;https://cli.vuejs.org/zh/ 第一步&#xff1a;全局安装&#xff08;仅第一次执行&#xff09; npm install -g vue/cli 或 yarn global add vue/cli 备注&#xff1a;如果出现下载缓慢&#xff1a;请配置npm 淘宝镜像&#xff1a; npm config set regis…

使用CSS3画出一个叮当猫HTML源码

我们经常使用PS或者Flash制作动画&#xff0c;本文则介绍了如何用CSS3画出个叮当猫&#xff0c;实现过程很有趣&#xff0c;感兴趣的朋友可以参考一下 首先&#xff0c;先把HTML结构搭建好&#xff1a; <div class"wrapper"> <!--叮当猫整体--> <di…

【使用redisson完成延迟队列的功能】使用redisson配合线程池完成异步执行功能,延迟队列和不需要延迟的队列

1. 使用redisson完成延迟队列的功能 引入依赖 spring-boot-starter-actuator是Spring Boot提供的一个用于监控和管理应用程序的模块 用于查看应用程序的健康状况、审计信息、指标和其他有用的信息。这些端点可以帮助你监控应用程序的运行状态、性能指标和健康状况。 已经有了…