阿里云OSS对象存储的项目实战操作

目录

一.什么是阿里云OSS?

二.阿里云OSS的使用:

1.导入依赖到 pom.xml 配置文件:

2.在application.yml配置文件中配置OSS的相关信息:

3.在properties包下创建OSS的配置属性类来封装配置文件的配置项:

4.在utils包下创建AliOssUtil类:

4.在config包下创建AliOssUtil对象:

5.在Controller中使用AliOssUtil工具类进行文件上传:


一.什么是阿里云OSS?

OSS 为 Object Storage Service,即对象存储服务。是阿里云提供的海量、安全、低成本、高可靠的云存储服务。

OSS 具有与平台无关的 RESTful API 接口,可以在任意应用、任意时间、任意地点 存储与访问 任何类型的数据。

简单地理解:OSS 基于网络提供数据存储服务,通过网络可以随时存储、获取 文本、图片、音频、视频等 非结构化数据。

比如网站的 图片、视频等文件就可以存放在 OSS 中(海量数据,自己维护起来麻烦,交给其他人去维护),每次从 OSS 中获取即可。

二.阿里云OSS的使用:

下面这个是阿里云的官网:https://www.aliyun.com

1.导入依赖到 pom.xml 配置文件:

<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId>
</dependency>

2.在application.yml配置文件中配置OSS的相关信息:

sky:alioss:endpoint: oss-cn-hangzhou.aliyuncs.com     #访问域名access-key-id: ************************    #访问密钥access-key-secret: *********************** #加密签名字符串和 OSS 用来验证签名字符串的密钥  bucket-name: sky-take-out-service          #存储空间名

3.在properties包下创建OSS的配置属性类来封装配置文件的配置项:

@Component
@ConfigurationProperties(prefix = "sky.alioss")
@Data
public class AliOssProperties {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;}

4.在utils包下创建AliOssUtil类:

通过创建的OSS配置属性类来给AliOssUtil中的四个属性赋值:

@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;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();}
}

4.在config包下创建AliOssUtil对象:

将AliOssUtil类交给Spring容器来管理:

@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());}
}

5.在Controller中使用AliOssUtil工具类进行文件上传:

@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j
public class CommonController {@Autowiredprivate AliOssUtil aliOssUtil;@PostMapping("/upload")@ApiOperation("文件上传")public Result<String> upload(MultipartFile file){//file这个需与前端提交的参数名保持一致log.info("文件上传:{}",file);try {//原始文件名String orginaiFilename = file.getOriginalFilename();//截取原始文件名的后缀String extension = orginaiFilename.substring(orginaiFilename.lastIndexOf("."));//构造新文件名称String objectName = UUID.randomUUID().toString() + extension;//文件请求路径String filePath = aliOssUtil.upload(file.getBytes(),objectName);//返回路径return Result.success(filePath);} catch (IOException e) {log.info("文件上传失败:{}",e);}return Result.error(MessageConstant.UPLOAD_FAILED);//文件上传失败}
}

好了,阿里云OSS对象存储服务的项目操作解释就到这里了,感谢收看!!!

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

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

相关文章

0723,UDP通信(聪明小辉聪明小辉),HTTP协议

我就是一个爱屋及乌的人&#xff01;&#xff01;&#xff01;&#xff01; #include "network_disk_kai.h" 昨天的epoll&#xff1a; 可恶抄错代码了 epoll_s.csockect return listenfdsetsockoptsockaddr_in bind listenfd & serveraddr…

Ubuntu 中默认的 root 用户密码

场景&#xff1a;想要切换root用户&#xff0c;发现得输入密码&#xff0c;以为是以前设置过然后一直尝试都是错误【认证失败】最后发现根本没设置过root用户&#xff0c;默认会随机生成root用户的密码&#x1f605; Ubuntu 中默认的 root 密码是随机的&#xff0c;即每次开机都…

用51单片机或者stm32能否开发机器人呢?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;能的。但是由于单片机和st…

MATLAB练习题——矩阵(2)

逻辑运算 a [5 0.2 0 -8 -0.7 ]&#xff0c;在进行逻辑运算时&#xff0c;a 相当于什么样的逻辑量。 相当于 a[1 1 0 1 1] 角度运算 在 sin(x)运算中&#xff0c;x 是角度还是弧度&#xff1f; 在 sin(x)运算中&#xff0c;x 是弧度&#xff0c;MATLAB 规定所有…

盘点2024年大家都在使用的AI智能写作工具

在科技发达的现在社会&#xff0c;AI已经悄悄的渗入我们生活的各种角落。不知道你有没有尝试过用ai智能写作来完成一些文章创作呢&#xff1f;这次我介绍几个可以提升效率的ai智能写作工具给你试试吧。 1.笔&#xff5c;灵AI写作 CSDN 传送门&#xff1a;https://ibiling.cn…

090、Python 写Excel文件及一些操作(使用xlwt库)

要写Excel文件&#xff0c;我们需要使用第三方库。 xlwt库是一个常用的写Excel的第三方库&#xff0c;它同时支持.xls和.xlsx。 要使用第三方库&#xff0c;首选需安装&#xff1a; pip install xlwt xlutils安装完成后&#xff0c;我们就可以引入库来进行相关操作了。 使用…

OpenAI发布GPT-4 Mini的深度分析及中国大模型的弯道超车机会

引言 在OpenAI封禁中国IP访问其API后&#xff0c;紧接着推出了GPT-4 Mini&#xff0c;这是一个引发广泛关注和讨论的新举措。此举不仅让人们质疑OpenAI的战略方向&#xff0c;更引发了对中国大模型是否能弯道超车的讨论。本文将详细分析GPT-4 Mini的特点、市场影响及中国大模型…

[rustlings]23_conversions

文章目录 from_into.rsfrom_str.rsas_ref_mut.rstry_from_into.rs from_into.rs // The From trait is used for value-to-value conversions. If From is // implemented, an implementation of Into is automatically provided. // You can read more about it in the docum…

谷粒商城实战笔记-50-51-商品分类的删除

文章目录 一&#xff0c;50-商品服务-API-三级分类-删除-逻辑删除1&#xff0c;逻辑删除的配置1.1 配置全局的逻辑删除规则&#xff08;可省略&#xff09;1.2 配置逻辑删除Bean&#xff08;可省略&#xff09;1.3 Bean相应字段上加上注解TableLogic 2&#xff0c;后台接口开发…

AI学习指南机器学习篇-t-SNE模型应用与Python实践

AI学习指南机器学习篇-t-SNE模型应用与Python实践 在机器学习领域&#xff0c;数据的可视化是非常重要的&#xff0c;因为它可以帮助我们更好地理解数据的结构和特征。而t-SNE&#xff08;t-distributed Stochastic Neighbor Embedding&#xff09;是一种非常强大的降维和可视…

星环科技推出知识库产品 AI PC时代数据交互方式变革

随着企业业务的快速发展&#xff0c;数据量呈爆炸式增长&#xff0c;有效的知识管理成为企业面临的重要问题。企业遇到的普遍问题是大量的结构化、半结构化数据存储在不同的系统中&#xff0c;需要用多种计算机语言进行检索。而大模型彻底改变了人们和数据的交互方式&#xff0…

深入解析:SPI与I2C通信协议的性能比较(内附资料)

在嵌入式系统中&#xff0c;SPI&#xff08;串行外设接口&#xff09;和I2C&#xff08;互连集成电路&#xff09;是两种广泛使用的通信协议。它们各自具有独特的性能特点和应用场景。本文将深入解析这两种通信协议&#xff0c;并在STM32微控制器上进行性能比较。 1. 引言 SP…

大数定理与中心极限定理

目录 两者的定义 大数定律 中心极限定理 关系与区别 切比雪夫大数定律、伯努利大数定律和辛钦大数定律的具体应用场景和条件是什么&#xff1f; 切比雪夫大数定律 伯努利大数定律 辛钦大数定律 应用场景&#xff1a; 条件&#xff1a; 中心极限定理在实际统计学研究…

分享:大数据信用报告查询平台哪个好?

大数据信用也就是我们常说的大数据&#xff0c;相信很多朋友对这个词都不陌生&#xff0c;特别是在银行申贷的时候&#xff0c;听过比较多&#xff0c;因为在银行做信用贷款的时候都会审查申贷人的大数据信用&#xff0c;贷前提前了解自己的大数据很有必要&#xff0c;那大数据…

【JS逆向课件:第十六课:Scrapy基础2】

ImagePipeLines的请求传参 环境安装&#xff1a;pip install Pillow USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36需求&#xff1a;将图片的名称和详情页中图片的数据进行爬取&a…

基于Java+SpringMvc+Vue技术的慈善捐赠平台设计与实现(源码+LW+部署讲解)

项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑&#xff01; 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows 8 开发语言&#xff1a;java 前端技术&#xff1a;JavaScript、VUE.j…

vue的this.$forceUpdate()和this.$set()

目录 this.$forceUpdate() 下面举个例子&#xff1a; 改变数组的7种方法&#xff1a; this.$set() 基本用法&#xff1a; 向对象添加属性 向数组添加属性 总的来说&#xff1a; this.$forceUpdate() 使用this.$forceUpdate()可以强制组件重新渲染。在Vue.js中&#xff0…

列举excel中调整行高列宽的五种方法

列举excel中调整行高列宽的五种方法 在Excel中调整行高列宽的方法有以下五种&#xff1a; 使用鼠标手动调整行高列宽&#xff1a;将鼠标悬停在行或列的边界上&#xff0c;光标会变成双向箭头&#xff0c;此时按住鼠标左键并拖动边界即可调整行高或列宽。 使用快捷键调整行高列…

工具(linux)

Yum 软件包管理器 介绍 yum Yum 是一个在 Red Hat 和 CentOS 等 Linux 发行版中常用的软件包管理器&#xff0c;它可以方便地进行软件包的安装、更新和删除。 安装软件包 使用 yum install 命令可以安装指定的软件包&#xff0c;例如&#xff1a; yum install package_nam…

DataLoader的使用 Pytorch

在 PyTorch 中&#xff0c;tensor.shape 返回一个包含张量各维度大小的元组。 所以&#xff0c;当你执行 print(img.shape)&#xff0c;你看到的 (3, 32, 32) 实际上是在告诉你&#xff1a; 这是一个三维张量第一维&#xff08;通道&#xff09;的大小是 3第二维&#xff08;…