在Spring Boot中使用七牛云上传图片到云存储
简介
本篇博客将介绍如何在Spring Boot项目中利用七牛云进行图片上传并将图片存储在云存储中。七牛云是一个流行的云存储服务提供商,提供了稳定、高效的图片存储和管理服务。
准备工作
在开始之前,需要完成以下准备工作:
- 注册七牛云账号,并获取Access Key和Secret Key。
- 在七牛云控制台创建一个存储空间。
添加依赖
首先,在pom.xml文件中添加七牛云相关的依赖:
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.0</version>
</dependency>
配置七牛云信息
在application.properties或application.yml文件中添加七牛云相关的配置信息:
qiniu.accessKey=YOUR_ACCESS_KEY
qiniu.secretKey=YOUR_SECRET_KEY
qiniu.bucket=YOUR_BUCKET_NAME
qiniu.domain=YOUR_DOMAIN
编写上传图片的方法
接下来,我们需要编写一个用于上传图片的方法。可以创建一个名为QiniuService的服务类,并在其中添加以下代码:
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@Service
public class QiniuService {
@Value("${qiniu.accessKey}")
private String accessKey;
@Value("${qiniu.secretKey}")
private String secretKey;
@Value("${qiniu.bucket}")
private String bucket;
@Value("${qiniu.domain}")
private String domain;
public String uploadImage(MultipartFile file) {
Configuration cfg = new Configuration();
UploadManager uploadManager = new UploadManager(cfg);
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(file.getBytes(), null, upToken);
if (response.isOK()) {
return domain + "/" + response.jsonToMap().get("key");
}
} catch (QiniuException ex) {
// 处理上传异常
} catch (IOException ex) {
// 处理IO异常
}
return null;
}
}
编写Controller
接下来,我们需要创建一个用于处理上传图片请求的Controller。可以创建一个名为ImageUploadController的类,并添加以下代码:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/api/images")
public class ImageUploadController {
@Autowired
private QiniuService qiniuService;
@PostMapping("/upload")
public String uploadImage(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
String imageUrl = qiniuService.uploadImage(file);
if (imageUrl != null) {
return imageUrl;
}
}
return "Failed to upload image.";
}
}
测试上传图片功能
最后,我们可以编写一个简单的测试页面来测试上传图片的功能。创建一个名为index.html的HTML文件,并添加以下代码:
<!DOCTYPE html>
<html>
<head>
<title>Image Upload Test</title>
</head>
<body>
<form id="imageUploadForm" enctype="multipart/form-data">
<input type="file" name="file" id="fileInput" accept="image/*">
<button type="submit">Upload</button>
</form>
<script>
document.getElementById("imageUploadForm").addEventListener("submit", function(event) {
event.preventDefault();
var formData = new FormData(this);
fetch("/api/images/upload", {
method: "POST",
body: formData
})
.then(response => response.text())
.then(imageUrl => {
console.log("Uploaded image URL: " + imageUrl);
})
.catch(error => {
console.error("Error uploading image: " + error);
});
});
</script>
</body>
</html>
在浏览器中打开index.html文件,选择一张图片并点击"Upload"按钮,上传图片并在控制台输出图片的URL。
至此,我们已经完成了在Spring Boot中使用七牛云上传图片到云存储的过程。希望这篇博客能够对你有所帮助!