SpringBoot集成七牛云OSS详细介绍
作者:mmseoamin日期:2023-12-11

📑前言

本文主要SpringBoot集成七牛云OSS详细介绍的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是青衿🥇

☁️博客首页:CSDN主页放风讲故事

🌄每日一句:努力一点,优秀一点

SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第1张

目录

文章目录

  • 📑前言
  • **目录**
      • 1、OSS?
        • 一,什么是OSS?
        • 二、OSS相关的术语
        • 三,为什么需要OSS?
        • 2、注册七牛云
        • 3. 七牛云的存储空间的创建
        • 4、Spring Boot集成七牛云demo
          • 一,在pom.xml中添加maven依赖
          • 二, 编写yml配置文件
          • 三,测试demo代码
          • 四,结果展示
          • 📑文章末尾

            1、OSS?

            一,什么是OSS?

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

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

            二、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 必须保密。

            三,为什么需要OSS?

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

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

            2、注册七牛云

            七牛云官网

            注册完可以白嫖

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第2张

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

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

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第3张

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

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第4张

            4、Spring Boot集成七牛云demo

            官方sdk地址

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第5张

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第6张

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第7张

            一,在pom.xml中添加maven依赖
            
              com.qiniu
              qiniu-java-sdk
              [7.13.0, 7.13.99]
            
            
            二, 编写yml配置文件
              oss: 
                # 配置accessKey
                xxaccessKey: ****
                # 配置secretKey
                xxsecretKey: ****
                # 配置空间名称
                xxbucket: ****
            

            accessKey和secretKey在密钥管理中查询

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第8张

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第9张

            三,测试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
            		}
            	}
            }
            
            四,结果展示

            上传的图片

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第10张

            在oss上显示

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第11张

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

            📑文章末尾

            SpringBoot集成七牛云OSS详细介绍,在这里插入图片描述,第12张