原文摘自:https://www.jiagou1216.com
七牛雲對象存儲的使用方法參考:https://www.jiagou1216.com/blog/devops/339.html
第一步:新建springboot項目,引入jar包,其中hutool-all是工具類,用來寫文件下載,可以隨意更換。
<!--工具類--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.2.0</version> </dependency> <!--七牛雲相關jar包--> <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.2.0, 7.2.99]</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.14.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.qiniu</groupId> <artifactId>happy-dns-java</artifactId> <version>0.1.6</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
第二步:登錄七牛雲,在秘鑰管理中找到accessKey和secretKey
第三步:寫測試類,代碼結構如下:
package com.example.demo; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.StreamProgress; import cn.hutool.core.lang.Console; import cn.hutool.http.HttpUtil; import com.qiniu.common.Zone; import com.qiniu.storage.BucketManager; import com.qiniu.storage.Configuration; import com.qiniu.storage.Region; import com.qiniu.storage.model.FileInfo; import com.qiniu.util.Auth; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /** * 架構師小跟班 www.jiagou1216.com * 官方API說明:https://developer.qiniu.com/kodo/sdk/1239/java#1 */ @SpringBootApplication public class DemoApplication { //七牛雲秘鑰AK static String accessKey = "xxxxxxxxxxxxxxxxxxxxxxx"; //七牛雲秘鑰SK static String secretKey = "xxxxxxxxxxxxxxxxxxxxxxx"; //七牛雲空間名稱 static String bucket = "xxxxxx"; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); list(); } /** * 列表 */ public static void list() { //構造一個帶指定Zone對象的配置類 Configuration cfg = new Configuration(Region.region0()); //...其他參數參考類注釋 Auth auth = Auth.create(accessKey, secretKey); BucketManager bucketManager = new BucketManager(auth, cfg); //文件名前綴 String prefix = ""; //每次迭代的長度限制,最大1000,推薦值 1000 int limit = 10; //指定目錄分隔符,列出所有公共前綴(模擬列出目錄效果)。缺省值為空字符串 String delimiter = ""; //列舉空間文件列表 BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter); while (fileListIterator.hasNext()) { //處理獲取的file list結果 FileInfo[] items = fileListIterator.next(); for (FileInfo item : items) { download(item.key);//下載 } } } /** * 下載 */ public static void download(String fileName) { String domainOfBucket = "cdn.jiagou1216.com"; String encodedFileName = null; try { encodedFileName = URLEncoder.encode(fileName, "utf-8").replace("+", "%20"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String publicUrl = String.format("%s/%s", domainOfBucket, encodedFileName); Auth auth = Auth.create(accessKey, secretKey); long expireInSeconds = 3600;//1小時,可以自定義鏈接過期時間 String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds); System.out.println(finalUrl); HttpUtil.downloadFile(finalUrl, FileUtil.file("d://七牛雲")); } }