当前位置: 首页 > news >正文

SpringBoot集成-阿里云对象存储OSS

文章目录

  • 阿里云 OSS 介绍
  • 准备工作
  • SpringBoot 集成 OSS


阿里云 OSS 介绍

阿里云对象存储 OSS (Object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用 OSS,你可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

在这里插入图片描述

准备工作

在这里插入图片描述
在这里插入图片描述

  1. 登录阿里云后进入阿里云控制台首页选择 对象存储 OSS 服务

在这里插入图片描述

  1. 开通服务

  2. 创建Bucket

在这里插入图片描述

填写 bucket 名称 & 选存储空间归属的地域 & 选择读写权限为(公共读

在这里插入图片描述
4. 获取密钥

在这里插入图片描述

创建 AccessKey

在这里插入图片描述

保存 AccessKey ID 和 AccessKey Secret

在这里插入图片描述

SpringBoot 集成 OSS

可以参考 官网 SDK 文档

  1. 导入 maven 坐标
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>${aliyun.sdk.oss}</version>
</dependency>
<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>${jaxb-api}</version>
</dependency>

如果是 Java 9 及以上版本,还需要导入其他坐标

  1. 在 yml 中添加配置

在这里插入图片描述

对应的配置类

在这里插入图片描述

  1. 编写 AliOssUtil
@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;/*** 文件上传** @param bytes* @param objectName* @return*/public String upload(byte[] bytes, String objectName) {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 创建PutObject请求。ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}//文件访问路径规则 https://BucketName.Endpoint/ObjectNameStringBuilder stringBuilder = new StringBuilder("https://");stringBuilder.append(bucketName).append(".").append(endpoint).append("/").append(objectName);log.info("文件上传到:{}", stringBuilder.toString());return stringBuilder.toString();}
}
  1. 配置 OSS Configuration
/*** 配置类,用于创建AliOssUtil对象*/
@Configuration
@Slf4j
public class OssConfiguration {@Bean@ConditionalOnMissingBeanpublic AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){log.info("开始创建阿里云文件上传工具类对象:{}", aliOssProperties);return new AliOssUtil(aliOssProperties.getEndpoint(),aliOssProperties.getAccessKeyId(),aliOssProperties.getAccessKeySecret(),aliOssProperties.getBucketName());}
}
  1. 编写通用上传文件接口
/*** 通用接口*/
@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j
public class CommonController {@Autowiredprivate AliOssUtil aliOssUtil;@PostMapping("/upload")@ApiOperation("文件上传")public Result<String> upload(MultipartFile file){log.info("文件上传:{}", file);try {// 原始文件名String originalFilename = file.getOriginalFilename();// 后缀String extension = originalFilename.substring(originalFilename.lastIndexOf("."));String objectName = UUID.randomUUID().toString() + extension;// 文件的请求路径String filePath = aliOssUtil.upload(file.getBytes(), objectName);return Result.success(filePath);} catch (IOException e) {log.error("文件上传失败:{}", e);}return Result.error(MessageConstant.UPLOAD_FAILED);}
}
  1. 上传文件到 OSS

从前端调用上面的上传文件的接口,就可以将文件上传到 OSS 上,并且获取到访问 OSS 文件路径的 URL 地址。

相关文章:

SpringBoot集成-阿里云对象存储OSS

文章目录 阿里云 OSS 介绍准备工作SpringBoot 集成 OSS 阿里云 OSS 介绍 阿里云对象存储 OSS &#xff08;Object Storage Service&#xff09;&#xff0c;是一款海量、安全、低成本、高可靠的云存储服务。使用 OSS&#xff0c;你可以通过网络随时存储和调用包括文本、图片、…...

fastapi-Headers和Cookies

在FastAPI中&#xff0c;Headers是一个特殊的类型&#xff0c;用于处理HTTP请求头&#xff08;Headers&#xff09;。Headers允许你接收、访问和修改HTTP请求中的头部信息。 使用Headers&#xff0c;你可以在FastAPI的路由视图中将请求头作为参数接收&#xff0c;并对它们进行…...

云计算的思想、突破、产业实践

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…...

【漏洞复现】Apache_HTTP_2.4.49_路径穿越漏洞(CVE-2021-41773)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞验证方式一 curl方式二 bp抓包 说明内容漏洞编号CVE-2021-41773漏洞名称Apache HTTP 路径穿越漏洞漏…...

AD9371 官方例程 NO-OS 主函数 headless 梳理

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 &#xff1a; AD9371 官方…...

WSL 下载

可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符&#xff0c;方法是右键单击并选择“以管理员身份运行”&#xff0c;输入 wsl --install 命令&#xff0c;然后重启计算机。 首先查看可以下载的版本 最后再运行wsl --ins…...

虚拟dom及diff算法之 —— snabbdom

源码&#xff1a;https://github.com/snabbdom/snabbdom 测试环境搭建 npm i -S snabbdom 安装好的node_modules提供了js和ts的代码&#xff1a;build&#xff1a;js代码&#xff0c;src&#xff1a;ts代码 npm i -D webpack5 webpack-cli3 webpack-dev-server3 webpack&#x…...

毅速丨3D打印结合拓扑优化让轻量化制造更容易

轻量化可以减少产品的重量&#xff0c;提高产品的性能和效率&#xff0c;同时减少能源消耗和排放。尤其在航空航天、汽车制造造等行业对轻量化追求更高。当前&#xff0c;随着制造技术的发展&#xff0c;拓扑优化结合3D打印为轻量化制造带来的显著的优势正在逐渐凸显。 首先&am…...

CentOS 7使用RPM包安装MySQL5.7

目标 本文目标是简单介绍如何在CentOS 7上使用RPM包安装MySQL 5.7&#xff0c;然后描述如何调整存储路径datadir。 环境准备 操作系统 —— CentOS 7MySQL版本 —— MySQL 5.7.44 获取MySQL-rpm包 官网下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.htm…...

UI设计工具都哪些常用的,推荐这5款

对于UI设计师来说&#xff0c;日常工作无非是围绕“需求分析”→设计实施→“开发交付”这三个环节来进行。 然而&#xff0c;在每个环节中&#xff0c;设计师使用的工具却完全不同。在这里&#xff0c;我收集整理了UI设计师在日常工作中常用的五种工具&#xff0c;希望能为新…...

小饭店点餐系统,小餐馆点餐怎么方便,操作简单的酒店点单软件

小饭店点餐系统&#xff0c;小餐馆点餐怎么方便&#xff0c;操作简单的酒店点单软件 今天给大家分享是 佳易王酒店点餐管理系统软件V16.0版本&#xff0c;点餐界面如下图&#xff0c; 1、开台的桌子醒目显示&#xff0c;结账后或没有开台的桌子为灰色显示。 2、多种点餐方式…...

面试经典150题——Day31

文章目录 一、题目二、题解 一、题目 3. Longest Substring Without Repeating Characters Given a string s, find the length of the longest substring without repeating characters. Example 1: Input: s “abcabcbb” Output: 3 Explanation: The answer is “abc”…...

chinese_llama_aplaca训练和代码分析

训练细节 ymcui/Chinese-LLaMA-Alpaca Wiki GitHub中文LLaMA&Alpaca大语言模型本地CPU/GPU训练部署 (Chinese LLaMA & Alpaca LLMs) - 训练细节 ymcui/Chinese-LLaMA-Alpaca Wikihttps://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/%E8%AE%AD%E7%BB%83%E7%BB%86%E…...

大数据Doris(十七):关于 Partition 和 Bucket 的数量和数据量的建议

文章目录 关于 Partition 和 Bucket 的数量和数据量的建议 关于 Partition 和 Bucket 的数量和数据量的建议 一个表的 Tablet 总数量等于 (Partition num * Bucket num)。一个表的 Tablet 数量,在不考虑扩容的情况下,推荐略多于整个集群的磁盘数量。单个 Tablet 的数据量理论…...

进击的巨人 完结篇 后篇-中文下载

话不多说&#xff0c;直接上链接 【简中】[BeanSub][Shingeki_n…1080P][x264_AAC].mp4 https://www.aliyundrive.com/s/7V4jaN6s6rY 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开「阿里云盘」APP &#xff0c;无需下载极速在线查看&#xff0c;视频原画倍速播放…...

力扣刷题-二叉树-二叉树的非递归遍历

参考&#xff1a;https://www.programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%AD%E4%BB%A3%E9%81%8D%E5%8E%86.html#%E6%80%9D%E8%B7%AF 思路 为什么可以用迭代法&#xff08;非递归的方式&#xff09;来实现二叉树的前后中序遍历呢&#xff1f; 我们在栈与…...

react_15

动态菜单 图标要独立安装依赖 npm install ant-design/icons 图标组件&#xff0c;用来将字符串图标转换为标签图标 import * as icons from "ant-design/icons"; interface Module {[p: string]: any; } const all: Module icons; export default function Ico…...

关于ROS的网络通讯方式TCP/UDP

一、TCP与UDP TCP/IP协议族为传输层指明了两个协议&#xff1a;TCP和UDP&#xff0c;它们都是作为应同程序和网络操作的中介物。 **TCP&#xff08;Transmission Control Protocol&#xff09;协议全称是传输控制协议&#xff0c;是一种面向连接的、可靠的、基于字节流的传输…...

Leetcode—421.数组中两个数的最大异或值【中等】明天写一下字典树做法!!!

2023每日刷题&#xff08;十九&#xff09; Leetcode—421.数组中两个数的最大异或值 算法思想 参考自灵茶山艾府 实现代码 class Solution { public:int findMaximumXOR(vector<int>& nums) {int maxValue *max_element(nums.begin(), nums.end());int highId…...

数智赋能!麒麟信安参展全球智慧城市大会

10月31日至11月2日&#xff0c;为期三天的2023全球智慧城市大会长沙在湖南国际会展中心举办&#xff0c;大会已连续举办12届&#xff0c;是目前全球规模最大、专注于城市和社会智慧化发展及转型的主题展会。长沙市委常委、常务副市长彭华松宣布开幕&#xff0c;全球智慧城市大会…...

Obsidian 完整使用手册 — 目录与索引

Obsidian 完整使用手册 — 目录与索引 一份从入门到精通的 Obsidian 全面指南&#xff0c;涵盖基础操作、核心功能、插件生态、同步备份与进阶技巧。 手册列表 编号手册名称内容概要01基础入门篇软件安装、界面布局、库管理、核心设置02Markdown 语法篇格式化语法、扩展语法、…...

给UR5e机械臂动力学建模做减法:一个简化模型在C++中的实现与验证

UR5e机械臂动力学建模的工程实践&#xff1a;从理论简化到C实现 在工业机器人领域&#xff0c;UR5e作为Universal Robots的经典协作机械臂&#xff0c;以其轻量化设计和安全性能广泛应用于装配、检测等场景。然而&#xff0c;当我们需要为其开发高级控制算法时&#xff0c;完整…...

3分钟彻底解决Cursor试用限制:设备标识重置技术深度解析

3分钟彻底解决Cursor试用限制&#xff1a;设备标识重置技术深度解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request limit…...

2026年写作类国际竞赛测评:从技术视角分析高含金量赛事与留学背景提升策略

导读&#xff1a;本文基于 2026 年最新赛事数据&#xff0c;从学术认可度、升学加成、参赛门槛、时间成本、获奖概率五个技术维度&#xff0c;对全球主流写作类国际竞赛进行量化测评。通过构建多维度评分模型&#xff0c;为留学申请者提供科学的竞赛选择与背景提升方案。 目录 …...

帮孩子建立时间观念:从认识“十分钟有多长”开始

很多家长都遇到过这样的困扰&#xff1a;让孩子“再玩十分钟就吃饭”&#xff0c;结果十分钟后他完全没反应&#xff0c;不是故意拖延&#xff0c;而是他真的不知道十分钟有多长。时间对孩子来说是抽象的&#xff0c;看不见摸不着。要帮孩子建立时间观念&#xff0c;不妨从感受…...

别只盯着波特率!深入理解英飞凌MCMCAN的报文过滤与优先级处理机制

别只盯着波特率&#xff01;深入理解英飞凌MCMCAN的报文过滤与优先级处理机制 在嵌入式系统开发中&#xff0c;CAN总线通信的稳定性和效率往往决定了整个系统的性能表现。许多工程师在配置CAN模块时&#xff0c;常常将注意力集中在波特率设置等基础参数上&#xff0c;却忽略了报…...

2026 论文双检突围:9 款查重降重降 AIGC 工具硬核横评,Paperxie 领跑全场景通关

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 毕业季论文查重飘红、AIGC 率爆表&#xff0c;已成为无数本科生与研究生的 “双重噩梦”。2026 年知网、维普全面升级…...

别再手动拼接数据了!用ONNXRuntime和TensorRT实现多Batch推理的Python/C++实战对比

多Batch推理实战&#xff1a;ONNXRuntime与TensorRT的高效对决 在计算机视觉项目的实际部署中&#xff0c;我们常常会遇到这样的场景&#xff1a;摄像头持续采集图像&#xff0c;或者需要同时处理来自多个传感器的数据。如果每次只处理单张图片&#xff0c;就像用吸管喝一大桶…...

专业休闲卤味零食包装设计公司排名榜单盘点-哲仕设计上榜

专业休闲卤味零食包装设计公司排名榜单盘点-哲仕设计上榜休闲卤味零食属于大众刚需休闲食品&#xff0c;涵盖肉类卤制熟食、素菜卤味小吃、真空独立卤包、常温即食卤品、麻辣风干肉干、组合卤味礼盒等品类&#xff0c;广泛适用于居家休闲解馋、办公下午茶加餐、追剧娱乐食用、出…...

3步搭建你的游戏串流魔法:用Sunshine让游戏无处不在

3步搭建你的游戏串流魔法&#xff1a;用Sunshine让游戏无处不在 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为不能随时随地玩电脑游戏而烦恼吗&#xff1f;想象一下&#…...