Java獲取七牛云存儲空間中圖片外鏈
七牛云官方文檔:https://developer.qiniu.com/kodo/sdk/java
如果有還不會使用SpringBoot整合七牛云存儲的小伙伴們,可以跳轉(zhuǎn)查看這篇文章:SpringBoot 整合七牛云上傳圖片
在最近的一個項目中,需要獲取在七牛云中存儲的所有圖片,并返回外鏈地址,具體代碼實現(xiàn)如下。
獲取七牛云密鑰
進入七牛云控制臺
點擊【頭像】→【密鑰管理】
創(chuàng)建密鑰,復制保存,下面要用
導入依賴
- 從 7.2.24 開始,okhttp3 升級到 3.14.2,其要求 java 1.8 及以上。
- 若一定 java 1.7 ,請手動指定 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/ # 文件名路徑前綴,用于過濾,默認為空 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)造一個帶指定 Region 對象的配置類 Configuration cfg = new Configuration(Region.region0()); Auth auth = Auth.create(accessKey, secretKey); BucketManager bucketManager = new BucketManager(auth, cfg); //每次迭代的長度限制,最大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流過濾掉掉多余的元素,并將其余元素的所有文件路徑和域名進行拼接,返回所有圖片外鏈的集合 List<String> collect = Arrays.stream(items).filter(f -> !f.key.equals(prefix)).map(f -> domain+f.key).collect(Collectors.toList()); return collect; } return null; }
測試結(jié)果
返回對應空間下的所有圖片的外鏈:
到此這篇關(guān)于Java獲取七牛云存儲空間中圖片外鏈的文章就介紹到這了,更多相關(guān)Java獲取七牛云圖片外鏈內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot Redis用注釋實現(xiàn)接口限流詳解
Redis 除了做緩存,還能干很多很多事情:分布式鎖、限流、處理請求接口冪等性。。。太多太多了~今天想和小伙伴們聊聊用 Redis 處理接口限流,這也是最近的 項目涉及到這個知識點了,我就拎出來和大家聊聊這個話題2022-07-07SpringBootWeb?入門了解?Swagger?的具體使用
這篇文章主要介紹了SpringBootWeb?入門了解?Swagger?的具體使用,Swagger?框架可以根據(jù)已經(jīng)實現(xiàn)的方法或者類,通過頁面的方式直觀清晰的查看或者進行測試該方法,需要的朋友可以參考下2024-08-08詳解SpringBoot項目整合Vue做一個完整的用戶注冊功能
本文主要介紹了SpringBoot項目整合Vue做一個完整的用戶注冊功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07java 域?qū)ο蠊蚕頂?shù)據(jù)的實現(xiàn)
本文主要介紹了java 域?qū)ο蠊蚕頂?shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03