SpringBoot集成七牛云OSS的示例詳解
一、OSS?
1,什么是OSS?
「OSS」的英文全稱(chēng)是Object Storage Service,翻譯成中文就是「對(duì)象存儲(chǔ)服務(wù)」,官方一點(diǎn)解釋就是對(duì)象存儲(chǔ)是一種使用HTTP API存儲(chǔ)和檢索非結(jié)構(gòu)化數(shù)據(jù)和元數(shù)據(jù)對(duì)象的工具。
白話文解釋就是將系統(tǒng)所要用的文件上傳到云硬盤(pán)上,該云硬盤(pán)提供了文件下載、上傳等一列服務(wù),這樣的服務(wù)以及技術(shù)可以統(tǒng)稱(chēng)為OSS,業(yè)內(nèi)提供OSS服務(wù)的廠商很多,知名常用且成規(guī)模的藍(lán)隊(duì)云等。
2,OSS相關(guān)的術(shù)語(yǔ)
1).存儲(chǔ)空間(Bucket)
存儲(chǔ)空間是您用于存儲(chǔ)對(duì)象(Object)的容器,所有的對(duì)象都必須隸屬于某個(gè)存儲(chǔ)空間。
2).對(duì)象/文件(Object)
對(duì)象是 OSS 存儲(chǔ)數(shù)據(jù)的基本單元,也被稱(chēng)為OSS的文件。對(duì)象由元信息(Object Meta)、用戶數(shù)據(jù)(Data)和文件名(Key)組成。對(duì)象由存儲(chǔ)空間內(nèi)部唯一的Key來(lái)標(biāo)識(shí)。
3).地域(Region)
地域表示 OSS 的數(shù)據(jù)中心所在物理位置。您可以根據(jù)費(fèi)用、請(qǐng)求來(lái)源等綜合選擇數(shù)據(jù)存儲(chǔ)的地域。詳情請(qǐng)查看OSS已經(jīng)開(kāi)通的Region。
4).訪問(wèn)域名(Endpoint)
Endpoint 表示OSS對(duì)外服務(wù)的訪問(wèn)域名。OSS以HTTP RESTful API的形式對(duì)外提供服務(wù),當(dāng)訪問(wèn)不同地域的時(shí)候,需要不同的域名。通過(guò)內(nèi)網(wǎng)和外網(wǎng)訪問(wèn)同一個(gè)地域所需要的域名也是不同的。具體的內(nèi)容請(qǐng)參見(jiàn)各個(gè)Region對(duì)應(yīng)的Endpoint。
5).訪問(wèn)密鑰(AccessKey)
AccessKey,簡(jiǎn)稱(chēng) AK,指的是訪問(wèn)身份驗(yàn)證中用到的AccessKeyId 和AccessKeySecret。OSS通過(guò)使用AccessKeyId 和AccessKeySecret對(duì)稱(chēng)加密的方法來(lái)驗(yàn)證某個(gè)請(qǐng)求的發(fā)送者身份。AccessKeyId用于標(biāo)識(shí)用戶,AccessKeySecret是用戶用于加密簽名字符串和OSS用來(lái)驗(yàn)證簽名字符串的密鑰,其中AccessKeySecret 必須保密。
3,為什么需要OSS?
? 因?yàn)槿绻褕D片視頻等文件上傳到自己的應(yīng)用的Web服務(wù)器,在讀取圖片的時(shí)候會(huì)占用比較多的資源。影響應(yīng)用服務(wù)器的性能。
? 所以我們一般使用OSS(Object Storage Service對(duì)象存儲(chǔ)服務(wù))存儲(chǔ)圖片或視頻。
二、注冊(cè)七牛云
注冊(cè)完可以白嫖

三. 七牛云的存儲(chǔ)空間的創(chuàng)建
登錄認(rèn)證點(diǎn)擊新建存儲(chǔ)空間

進(jìn)入控制臺(tái),新建存儲(chǔ)空間,自定義存儲(chǔ)空間名稱(chēng)bucket,填寫(xiě)完信息點(diǎn)擊確定即可,這里選用華南地區(qū)

四、Spring Boot集成七牛云demo



1,在pom.xml中添加maven依賴(lài)
<dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.13.0, 7.13.99]</version> </dependency>
2, 編寫(xiě)yml配置文件
oss:
# 配置accessKey
xxaccessKey: ****
# 配置secretKey
xxsecretKey: ****
# 配置空間名稱(chēng)
xxbucket: ****
accessKey和secretKey在密鑰管理中查詢(xún)


3,測(cè)試demo代碼
@Component
@SpringBootTest
/*@ConfigurationProperties(prefix = "oss")//指定讀取application.yml文件的oss屬性的數(shù)據(jù)*/
public class OSSTest {
//注意要從application.yml讀取屬性數(shù)據(jù),下面的3個(gè)成員變量的名字必須對(duì)應(yīng)application.yml的myoss屬性的三個(gè)子屬性名字
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(){
//構(gòu)造一個(gè)帶指定 Region 對(duì)象的配置類(lèi)。你的七牛云OSS創(chuàng)建的是哪個(gè)區(qū)域的,那么就調(diào)用Region的什么方法即可
Configuration cfg = new Configuration(Region.huanan());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上傳版本
UploadManager uploadManager = new UploadManager(cfg);
//文件名,如果寫(xiě)成null的話,就以文件內(nèi)容的hash值作為文件名
String key = null;
try {
//byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
//ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
//上面兩行是官方寫(xiě)的(注釋掉),下面那幾行是我們寫(xiě)的
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);
//解析上傳成功的結(jié)果
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,結(jié)果展示
上傳的圖片

在oss上顯示

以上是springboot使用七牛云OSS的示例,可以根據(jù)自己的實(shí)際需求進(jìn)行調(diào)整。
到此這篇關(guān)于SpringBoot集成七牛云OSS的示例詳解的文章就介紹到這了,更多相關(guān)SpringBoot集成七牛云OSS內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot使用阿里OSS實(shí)現(xiàn)文件云存儲(chǔ)的方法
- springboot操作阿里云OSS實(shí)現(xiàn)文件上傳,下載,刪除功能
- springBoot接入阿里云oss的實(shí)現(xiàn)步驟
- SpringBoot整合阿里云OSS對(duì)象存儲(chǔ)服務(wù)實(shí)現(xiàn)文件上傳
- Springboot集成阿里云OSS上傳文件系統(tǒng)教程
- springboot工程如何使用阿里云OSS傳輸文件
- springBoot中的CORS跨域注解@CrossOrigin詳解
- springboot+vue實(shí)現(xiàn)oss文件存儲(chǔ)的示例代碼
相關(guān)文章
Java基于JDBC連接數(shù)據(jù)庫(kù)及顯示數(shù)據(jù)操作示例
這篇文章主要介紹了Java基于JDBC連接數(shù)據(jù)庫(kù)及顯示數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了Java使用jdbc進(jìn)行mysql數(shù)據(jù)庫(kù)連接與數(shù)據(jù)讀取、顯示等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Maven項(xiàng)目打Jar包并添加依賴(lài)步驟詳解
這篇文章主要介紹了Maven項(xiàng)目打Jar包并添加依賴(lài)步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java工具類(lèi)DateUtils實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了Java工具類(lèi)DateUtils實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
理解JDK動(dòng)態(tài)代理為什么必須要基于接口
這篇文章主要介紹了理解JDK動(dòng)態(tài)代理為什么必須要基于接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
使用Java Collections實(shí)現(xiàn)集合排序的全面指南
在Java編程中,集合(Collection)是處理數(shù)據(jù)的重要工具之一,Java集合框架提供了豐富的接口和類(lèi)來(lái)操作數(shù)據(jù)集合,而排序是其中最常見(jiàn)的操作之一,本文將詳細(xì)介紹如何使用Collections類(lèi)對(duì)集合進(jìn)行排序,并深入探討其背后的原理和使用場(chǎng)景,需要的朋友可以參考下2025-02-02
詳解Java中String,StringBuffer和StringBuilder的使用
這篇文章主要為大家詳細(xì)介紹了Java中String,StringBuffer和StringBuilder三者的區(qū)別以及使用,文中的少了講解詳細(xì),感興趣的可以了解一下2022-07-07
idea sql的xml文件出現(xiàn)紅色警告符的處理方式
這篇文章主要介紹了idea sql的xml文件出現(xiàn)紅色警告符處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
SpringBoot2.7.14整合redis7的詳細(xì)過(guò)程
這篇文章主要介紹了SpringBoot2.7.14整合redis7的詳細(xì)過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-10-10

