Java獲取七牛云存儲(chǔ)空間中圖片外鏈
七牛云官方文檔:https://developer.qiniu.com/kodo/sdk/java
如果有還不會(huì)使用SpringBoot整合七牛云存儲(chǔ)的小伙伴們,可以跳轉(zhuǎn)查看這篇文章:SpringBoot 整合七牛云上傳圖片
在最近的一個(gè)項(xiàng)目中,需要獲取在七牛云中存儲(chǔ)的所有圖片,并返回外鏈地址,具體代碼實(shí)現(xiàn)如下。
獲取七牛云密鑰
進(jìn)入七牛云控制臺(tái)

點(diǎn)擊【頭像】→【密鑰管理】

創(chuàng)建密鑰,復(fù)制保存,下面要用

導(dǎo)入依賴
- 從 7.2.24 開始,okhttp3 升級(jí)到 3.14.2,其要求 java 1.8 及以上。
- 若一定 java 1.7 ,請(qǐng)手動(dòng)指定 okhttp3 依賴 3.12,要求 3.12.3 及以上,
com.squareup.okhttp3:okhttp:3.12.3
<!-- https://mvnrepository.com/artifact/com.qiniu/qiniu-java-sdk -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.11.0</version>
</dependency>
編輯 YAML 配置文件
在配置文件中添加七牛云的一些參數(shù):
#七牛云參數(shù) qiniu: accessKey: IrgJ4tvtYwWMr # AK accessSecretKey: J-0wUai568ul7L # SK bucket: yunpicos # 空間 prefix: word/ # 文件名路徑前綴,用于過(guò)濾,默認(rèn)為空 domain: http://img.roman.top/ # 域名
添加七牛云配置類
封裝七牛云需要的配置參數(shù):
@Getter
@Configuration
public class QiNiuConfig {
//七牛云 ak
@Value("${qiniu.accessKey}")
private String accessKey;
//七牛云sk
@Value("${qiniu.accessSecretKey}")
private String secretKey;
//指定七牛云空間
@Value("${qiniu.bucket}")
private String bucket;
//文件名路徑前綴
@Value("${qiniu.prefix:}")
private String prefix;
//指定目錄分隔符,列出所有公共前綴(模擬列出目錄效果)。缺省值為空字符串
@Value("${qiniu.delimiter:}")
private String delimiter;
//七牛云空間的域名
@Value("${qiniu.domain:}")
private String domain;
}
編寫 QiNiuImgUrls 方法
返回所有圖片外鏈的集合,外鏈格式為【域名+文件路徑】:
public List<String> imgUrls(){
//參數(shù)
String accessKey = qiNiuConfig.getAccessKey();
String secretKey = qiNiuConfig.getSecretKey();
String bucket = qiNiuConfig.getBucket();
String prefix = qiNiuConfig.getPrefix();
String delimiter = qiNiuConfig.getDelimiter();
String domain = qiNiuConfig.getDomain();
//構(gòu)造一個(gè)帶指定 Region 對(duì)象的配置類
Configuration cfg = new Configuration(Region.region0());
Auth auth = Auth.create(accessKey, secretKey);
BucketManager bucketManager = new BucketManager(auth, cfg);
//每次迭代的長(zhǎng)度限制,最大1000,推薦值 1000
int limit = 1000;
//列舉空間文件列表
BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter);
while (fileListIterator.hasNext()) {
//處理獲取的file list結(jié)果
FileInfo[] items = fileListIterator.next();
//stream流過(guò)濾掉掉多余的元素,并將其余元素的所有文件路徑和域名進(jìn)行拼接,返回所有圖片外鏈的集合
List<String> collect = Arrays.stream(items).filter(f -> !f.key.equals(prefix)).map(f -> domain+f.key).collect(Collectors.toList());
return collect;
}
return null;
}
測(cè)試結(jié)果
返回對(duì)應(yīng)空間下的所有圖片的外鏈:

到此這篇關(guān)于Java獲取七牛云存儲(chǔ)空間中圖片外鏈的文章就介紹到這了,更多相關(guān)Java獲取七牛云圖片外鏈內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot Redis用注釋實(shí)現(xiàn)接口限流詳解
Redis 除了做緩存,還能干很多很多事情:分布式鎖、限流、處理請(qǐng)求接口冪等性。。。太多太多了~今天想和小伙伴們聊聊用 Redis 處理接口限流,這也是最近的 項(xiàng)目涉及到這個(gè)知識(shí)點(diǎn)了,我就拎出來(lái)和大家聊聊這個(gè)話題2022-07-07
Spring注入Map集合實(shí)現(xiàn)策略模式詳解
這篇文章主要介紹了Spring注入Map集合實(shí)現(xiàn)策略模式詳解,Spring提供通過(guò)@Resource注解將相同類型的對(duì)象注入到Map集合,并將對(duì)象的名字作為key,對(duì)象作為value封裝進(jìn)入Map,需要的朋友可以參考下2023-11-11
SpringBootWeb?入門了解?Swagger?的具體使用
這篇文章主要介紹了SpringBootWeb?入門了解?Swagger?的具體使用,Swagger?框架可以根據(jù)已經(jīng)實(shí)現(xiàn)的方法或者類,通過(guò)頁(yè)面的方式直觀清晰的查看或者進(jìn)行測(cè)試該方法,需要的朋友可以參考下2024-08-08
詳解SpringBoot項(xiàng)目整合Vue做一個(gè)完整的用戶注冊(cè)功能
本文主要介紹了SpringBoot項(xiàng)目整合Vue做一個(gè)完整的用戶注冊(cè)功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
java 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了java 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

