SpringBoot集成七牛云OSS的示例详解

 更新时间:2023年11月24日 09:26:14   作者:放风讲故事  
OSS的英文全称是Object Storage Service,翻译成中文就是对象存储服务,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具,本文给大家详细介绍了SpringBoot集成七牛云OSS的示例,需要的朋友可以参考下

一、OSS?

1,什么是OSS?

「OSS」的英文全称是Object Storage Service,翻译成中文就是「对象存储服务」,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。

白话文解释就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了文件下载、上传等一列服务,这样的服务以及技术可以统称为OSS,业内提供OSS服务的厂商很多,知名常用且成规模的蓝队云等。

2,OSS相关的术语

1).存储空间(Bucket)

存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。

2).对象/文件(Object)

对象是 OSS 存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。

3).地域(Region)

地域表示 OSS 的数据中心所在物理位置。您可以根据费用、请求来源等综合选择数据存储的地域。详情请查看OSS已经开通的Region。

4).访问域名(Endpoint)

Endpoint 表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。具体的内容请参见各个Region对应的Endpoint。

5).访问密钥(AccessKey)

AccessKey,简称 AK,指的是访问身份验证中用到的AccessKeyId 和AccessKeySecret。OSS通过使用AccessKeyId 和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户,AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,其中AccessKeySecret 必须保密。

3,为什么需要OSS?

​ 因为如果把图片视频等文件上传到自己的应用的Web服务器,在读取图片的时候会占用比较多的资源。影响应用服务器的性能。

​ 所以我们一般使用OSS(Object Storage Service对象存储服务)存储图片或视频。

二、注册七牛云

七牛云官网

注册完可以白嫖

在这里插入图片描述

三. 七牛云的存储空间的创建

登录认证点击新建存储空间

在这里插入图片描述

进入控制台,新建存储空间,自定义存储空间名称bucket,填写完信息点击确定即可,这里选用华南地区

在这里插入图片描述

四、Spring Boot集成七牛云demo

官方sdk地址

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1,在pom.xml中添加maven依赖

<dependency>
  <groupId>com.qiniu</groupId>
  <artifactId>qiniu-java-sdk</artifactId>
  <version>[7.13.0, 7.13.99]</version>
</dependency>

2, 编写yml配置文件

  oss: 
    # 配置accessKey
    xxaccessKey: ****
    # 配置secretKey
    xxsecretKey: ****
    # 配置空间名称
    xxbucket: ****

accessKey和secretKey在密钥管理中查询

在这里插入图片描述

在这里插入图片描述

3,测试demo代码

@Component
@SpringBootTest
/*@ConfigurationProperties(prefix = "oss")//指定读取application.yml文件的oss属性的数据*/
public class OSSTest {

	//注意要从application.yml读取属性数据,下面的3个成员变量的名字必须对应application.yml的myoss属性的三个子属性名字
	private String xxaccessKey;
	private String xxsecretKey;
	private String xxbucket;
	public void setXxaccessKey(String xxaccessKey) {
		this.xxaccessKey = xxaccessKey;
	}
	public void setXxsecretKey(String xxsecretKey) {
		this.xxsecretKey = xxsecretKey;
	}
	public void setXxbucket(String xxbucket) {
		this.xxbucket = xxbucket;
	}
	@Test
	public void testOss(){
		//构造一个带指定 Region 对象的配置类。你的七牛云OSS创建的是哪个区域的,那么就调用Region的什么方法即可
		Configuration cfg = new Configuration(Region.huanan());
		cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
		UploadManager uploadManager = new UploadManager(cfg);
		//文件名,如果写成null的话,就以文件内容的hash值作为文件名
		String key = null;
		try {
			//byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
			//ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
			//上面两行是官方写的(注释掉),下面那几行是我们写的
			InputStream xxinputStream = new FileInputStream("C:\\Users\\Eliauk\\Downloads\\Desktop\\OIP-C.jpg");
			Auth auth = Auth.create(xxaccessKey, xxsecretKey);
			String upToken = auth.uploadToken(xxbucket);

			try {
				Response response = uploadManager.put(xxinputStream,key,upToken,null, null);
				//解析上传成功的结果
				DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
				System.out.println("上传成功! 生成的key是: "+putRet.key);
				System.out.println("上传成功! 生成的hash是: "+putRet.hash);
			} catch (QiniuException ex) {
				Response r = ex.response;
				System.err.println(r.toString());
				try {
					System.err.println(r.bodyString());
				} catch (QiniuException ex2) {
					//ignore
				}
			}
		}catch (Exception e) {
			//ignore
		}
	}
}

4,结果展示

上传的图片

在这里插入图片描述

在oss上显示

在这里插入图片描述

以上是springboot使用七牛云OSS的示例,可以根据自己的实际需求进行调整。

到此这篇关于SpringBoot集成七牛云OSS的示例详解的文章就介绍到这了,更多相关SpringBoot集成七牛云OSS内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基于JDBC连接数据库及显示数据操作示例

    Java基于JDBC连接数据库及显示数据操作示例

    这篇文章主要介绍了Java基于JDBC连接数据库及显示数据操作,结合实例形式分析了Java使用jdbc进行mysql数据库连接与数据读取、显示等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 线程池的七大核心参数以及常用的四种线程池详解

    线程池的七大核心参数以及常用的四种线程池详解

    这篇文章主要介绍了线程池的七大核心参数以及常用的四种线程池使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Maven项目打Jar包并添加依赖步骤详解

    Maven项目打Jar包并添加依赖步骤详解

    这篇文章主要介绍了Maven项目打Jar包并添加依赖步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java工具类DateUtils实例详解

    Java工具类DateUtils实例详解

    这篇文章主要为大家详细介绍了Java工具类DateUtils实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 理解JDK动态代理为什么必须要基于接口

    理解JDK动态代理为什么必须要基于接口

    这篇文章主要介绍了理解JDK动态代理为什么必须要基于接口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 使用Java Collections实现集合排序的全面指南

    使用Java Collections实现集合排序的全面指南

    在Java编程中,集合(Collection)是处理数据的重要工具之一,Java集合框架提供了丰富的接口和类来操作数据集合,而排序是其中最常见的操作之一,本文将详细介绍如何使用Collections类对集合进行排序,并深入探讨其背后的原理和使用场景,需要的朋友可以参考下
    2025-02-02
  • 详解Java中String,StringBuffer和StringBuilder的使用

    详解Java中String,StringBuffer和StringBuilder的使用

    这篇文章主要为大家详细介绍了Java中String,StringBuffer和StringBuilder三者的区别以及使用,文中的少了讲解详细,感兴趣的可以了解一下
    2022-07-07
  • JVM方法调用invokevirtual详解

    JVM方法调用invokevirtual详解

    JVM调用方法有五条指令,分别是invokestatic,invokespecial,invokevirtual,invokeinterface,invokedynamic,这篇文章主要说明invokevirtual方法的调用问题,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-03-03
  • idea sql的xml文件出现红色警告符的处理方式

    idea sql的xml文件出现红色警告符的处理方式

    这篇文章主要介绍了idea sql的xml文件出现红色警告符处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • SpringBoot2.7.14整合redis7的详细过程

    SpringBoot2.7.14整合redis7的详细过程

    这篇文章主要介绍了SpringBoot2.7.14整合redis7的详细过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10

最新评论