SpringBoot集成七牛云OSS详细介绍

📑前言

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

🎬作者简介:大家好,我是青衿🥇
☁️博客首页:CSDN主页放风讲故事
🌄每日一句:努力一点,优秀一点

在这里插入图片描述

目录

文章目录

  • 📑前言
  • **目录**
      • 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、注册七牛云

七牛云官网
注册完可以白嫖
在这里插入图片描述

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

登录认证点击新建存储空间
在这里插入图片描述

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

在这里插入图片描述

4、Spring Boot集成七牛云demo

官方sdk地址
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

accessKey和secretKey在密钥管理中查询

在这里插入图片描述

在这里插入图片描述

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

上传的图片
在这里插入图片描述

在oss上显示
在这里插入图片描述

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

📑文章末尾

在这里插入图片描述

  • 143
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 125
    评论
1. 添加七牛云OSS依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.2.0, 7.999.999]</version> </dependency> ``` 2. 配置七牛云OSS 在application.properties文件中添加以下配置: ``` # 七牛云OSS配置 qiniu.accessKey=your_access_key qiniu.secretKey=your_secret_key qiniu.bucket=your_bucket_name qiniu.pathPrefix=http://your_domain_name/ qiniu.zone=auto ``` 其中,`accessKey`和`secretKey`是七牛云账号的Access Key和Secret Key,`bucket`为存储空间名称,`pathPrefix`为访问域名前缀,`zone`为存储区域,这里设置为自动选择。 3. 创建七牛云OSS服务类 创建一个名为`QiniuOSSService`的类,用于封装七牛云OSS的操作方法。 ``` @Service public class QiniuOSSService { @Value("${qiniu.accessKey}") private String accessKey; @Value("${qiniu.secretKey}") private String secretKey; @Value("${qiniu.bucket}") private String bucket; @Value("${qiniu.pathPrefix}") private String pathPrefix; private Configuration configuration = new Configuration(Zone.autoZone()); private UploadManager uploadManager = new UploadManager(configuration); /** * 上传文件 * * @param file 文件 * @return 文件URL * @throws QiniuException 七牛云异常 */ public String uploadFile(File file) throws QiniuException { Auth auth = Auth.create(accessKey, secretKey); String token = auth.uploadToken(bucket); Response response = uploadManager.put(file, null, token); DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); return pathPrefix + putRet.key; } /** * 删除文件 * * @param key 文件key * @throws QiniuException 七牛云异常 */ public void deleteFile(String key) throws QiniuException { Auth auth = Auth.create(accessKey, secretKey); BucketManager bucketManager = new BucketManager(auth, configuration); bucketManager.delete(bucket, key); } } ``` 其中,`uploadFile`方法用于上传文件到七牛云OSS并返回文件URL,`deleteFile`方法用于删除文件。 4. 使用七牛云OSS服务类 在需要上传或删除文件的地方,注入`QiniuOSSService`并调用相应的方法即可。例如: ``` @RestController public class FileController { @Autowired private QiniuOSSService qiniuOSSService; @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException, QiniuException { File tempFile = File.createTempFile("temp", null); file.transferTo(tempFile); String fileUrl = qiniuOSSService.uploadFile(tempFile); tempFile.delete(); return fileUrl; } @DeleteMapping("/delete") public void deleteFile(@RequestParam("key") String key) throws QiniuException { qiniuOSSService.deleteFile(key); } } ``` 这里提供了一个上传和删除文件的示例接口,上传的文件可以是`MultipartFile`类型,需要先将其转换为`File`类型。
评论 125
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值