Spring Boot對(duì)接七牛云存儲(chǔ)的詳細(xì)步驟和流程
以下是 Spring Boot 對(duì)接七牛云存儲(chǔ)的詳細(xì)步驟和流程,結(jié)合了多個(gè)開(kāi)發(fā)實(shí)踐和最佳方案:
??一、前期準(zhǔn)備??
??注冊(cè)七牛云賬號(hào)??
- 訪問(wèn)七牛云官網(wǎng),完成注冊(cè)并登錄。
- 進(jìn)入「密鑰管理」獲取
Access Key和Secret Key(用于鑒權(quán))。
??創(chuàng)建存儲(chǔ)空間(Bucket)??
- 在控制臺(tái)選擇「對(duì)象存儲(chǔ)」,創(chuàng)建新的存儲(chǔ)空間,命名后記錄
Bucket 名稱。 - 設(shè)置存儲(chǔ)空間屬性(如存儲(chǔ)類型、地域等),獲取存儲(chǔ)空間的訪問(wèn)域名(如
http://xxx.bkt.clouddn.com)。
??二、Spring Boot 項(xiàng)目配置??
1. ??添加依賴??
在 pom.xml 中引入七牛云 Java SDK:
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.7.99]</version>
</dependency>
??注意??:版本號(hào)需根據(jù)最新網(wǎng)頁(yè)調(diào)整。
2. ??配置參數(shù)??
在 application.yml 中添加七牛云配置:
qiniu: accessKey: your_access_key secretKey: your_secret_key bucket: your_bucket_name domain: http://xxx.bkt.clouddn.com # 存儲(chǔ)空間訪問(wèn)域名 region: huadong # 存儲(chǔ)空間所在地域(如華東:huadong)
3. ??配置類??
創(chuàng)建 QiniuProperties 類綁定配置:
@Data
@ConfigurationProperties(prefix = "qiniu")
public class QiniuProperties {
private String accessKey;
private String secretKey;
private String bucket;
private String domain;
private String region;
}
??三、實(shí)現(xiàn)文件上傳功能??
1. ??工具類開(kāi)發(fā)??
創(chuàng)建 QiniuUtils 工具類,封裝上傳邏輯:
@Component
public class QiniuUtils {
@Autowired
private QiniuProperties qiniuProperties;
// 上傳文件到七牛云
public String uploadFile(MultipartFile file) {
try {
Configuration cfg = new Configuration(Region.region2()); // 根據(jù)實(shí)際地域選擇
UploadManager uploadManager = new UploadManager(cfg);
Auth auth = Auth.create(qiniuProperties.getAccessKey(), qiniuProperties.getSecretKey());
String upToken = auth.uploadToken(qiniuProperties.getBucket());
// 生成唯一文件名(避免重復(fù))
String fileName = UUID.randomUUID().toString() + "_" + file.getOriginalFilename();
// 上傳并解析結(jié)果
Response response = uploadManager.put(file.getBytes(), fileName, upToken);
DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
// 返回完整訪問(wèn)路徑
return qiniuProperties.getDomain() + "/" + putRet.key;
} catch (Exception e) {
throw new RuntimeException("上傳失敗:" + e.getMessage());
}
}
}
??關(guān)鍵點(diǎn)??:
- 使用 Region 指定存儲(chǔ)區(qū)域(如 Region.huadong() 對(duì)應(yīng)華東)。
- 文件名通過(guò) UUID 生成唯一標(biāo)識(shí),保留原始后綴。
2. ??Controller 層??
創(chuàng)建接口接收前端上傳請(qǐng)求:
@RestController
@RequestMapping("/file")
public class FileController {
@Autowired
private QiniuUtils qiniuUtils;
@PostMapping("/upload")
public R uploadFile(@RequestParam("file") MultipartFile file) {
String url = qiniuUtils.uploadFile(file);
return R.success(url);
}
}
??四、擴(kuò)展功能??
1. ??文件下載??
通過(guò)七牛云域名直接訪問(wèn)文件,或生成帶簽名的臨時(shí)下載鏈接:
public String generateDownloadUrl(String key) {
Auth auth = Auth.create(accessKey, secretKey);
return auth.privateDownloadUrl(domain + "/" + key, 3600); // 1小時(shí)有效
}
2. ??文件刪除??
使用 BucketManager 刪除指定文件:
public void deleteFile(String key) {
Auth auth = Auth.create(accessKey, secretKey);
BucketManager bucketManager = new BucketManager(auth, config);
bucketManager.delete(bucketName, key);
}
3. ??文件列表查詢??
遍歷存儲(chǔ)空間中的文件(分頁(yè)處理):
public List<String> listFiles(String prefix, String marker) {
Auth auth = Auth.create(accessKey, secretKey);
BucketManager bucketManager = new BucketManager(auth, config);
BucketManager.FileListIterator fileListIterator =
bucketManager.createFileListIterator(bucketName, prefix, 1000, marker);
List<String> fileList = new ArrayList<>();
while (fileListIterator.hasNext()) {
FileInfo[] items = fileListIterator.next();
for (FileInfo item : items) {
fileList.add(item.key);
}
}
return fileList;
}
??五、前端集成示例??
1. ??HTML 表單??
<form action="/file/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">上傳</button>
</form>
2. ??AJAX 上傳(jQuery)??
$.ajax({
url: "/file/upload",
type: "POST",
data: new FormData($("#uploadForm")[0]),
processData: false,
contentType: false,
success: function(res) {
console.log("上傳成功:" + res.data);
}
});
??六、注意事項(xiàng)??
??文件大小限制??
- 在
application.yml中配置:
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 50MB
??異常處理??
- 添加全局異常處理器,捕獲七牛云 SDK 拋出的
QiniuException。
??安全性??
- 敏感操作(如刪除)需添加權(quán)限校驗(yàn)。
- 臨時(shí)下載鏈接建議設(shè)置短有效期。
通過(guò)以上步驟,即可實(shí)現(xiàn) Spring Boot 與七牛云存儲(chǔ)的完整對(duì)接,支持文件上傳、下載、刪除及列表查詢等核心功能。實(shí)際開(kāi)發(fā)中可根據(jù)需求擴(kuò)展圖片處理(如縮略圖)、水印添加等高級(jí)功能。
以上就是Spring Boot對(duì)接七牛云存儲(chǔ)的詳細(xì)步驟和流程的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot對(duì)接七牛云存儲(chǔ)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java StringBuffer類與StringBuilder類用法實(shí)例小結(jié)
這篇文章主要介紹了Java StringBuffer類與StringBuilder類用法,結(jié)合實(shí)例形式總結(jié)分析了Java StringBuffer類與StringBuilder類的功能、原理及添加、刪除、替換、截取等操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-03-03
Spring Security在標(biāo)準(zhǔn)登錄表單中添加一個(gè)額外的字段
這篇文章主要介紹了Spring Security在標(biāo)準(zhǔn)登錄表單中添加一個(gè)額外的字段,我們將重點(diǎn)關(guān)注兩種不同的方法,以展示框架的多功能性以及我們可以使用它的靈活方式。 需要的朋友可以參考下2019-05-05
MybatisPlus使用queryWrapper如何實(shí)現(xiàn)復(fù)雜查詢
這篇文章主要介紹了MybatisPlus使用queryWrapper如何實(shí)現(xiàn)復(fù)雜查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01
SpringBoot+layui實(shí)現(xiàn)文件上傳功能
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。這篇文章主要介紹了SpringBoot+layui實(shí)現(xiàn)文件上傳,需要的朋友可以參考下2018-09-09
java 實(shí)現(xiàn)MD5加密算法的簡(jiǎn)單實(shí)例
這篇文章主要介紹了java 實(shí)現(xiàn)MD5加密算法的簡(jiǎn)單實(shí)例的相關(guān)資料,這里提供實(shí)例幫助大家應(yīng)用這樣的加密算法,需要的朋友可以參考下2017-09-09
Java JFinal框架中實(shí)現(xiàn)添加定時(shí)任務(wù)功能詳解
這篇文章主要為大家詳細(xì)介紹了如何在JFinal框架項(xiàng)目中添加定時(shí)任務(wù)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
詳解Spring-bean的循環(huán)依賴以及解決方式
這篇文章主要介紹了詳解Spring-bean的循環(huán)依賴以及解決方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
JDK?+?Maven?+IDEA?安裝配置一條龍教程(2025?最新)
這篇文章主要介紹了JDK?+?Maven?+IDEA安裝配置的相關(guān)資料,通過(guò)一個(gè)簡(jiǎn)單的HelloWorld示例展示了如何在IDEA中創(chuàng)建和運(yùn)行Java項(xiàng)目,文中給出了詳細(xì)的圖文教程,需要的朋友可以參考下2025-11-11

