在springboot中使用minio,并使用上传和下载功能
时间: 2024-02-12 10:02:54 浏览: 78
SpringBoot(31) 整合MinIO实现文件上传与下载
好的,下面是在 Spring Boot 中使用 MinIO 并实现上传和下载功能的具体步骤:
1. 添加 MinIO 的依赖
在 pom.xml 文件中添加 MinIO 的依赖:
```xml
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.2</version>
</dependency>
```
2. 配置 MinIO 的连接信息
在 application.yml 或 application.properties 文件中添加 MinIO 的连接信息,例如:
```yaml
spring:
cloud:
minio:
endpoint: http://localhost:9000
access-key: ACCESS-KEY
secret-key: SECRET-KEY
```
3. 编写 MinIO 的代码
下面是上传和下载文件的代码示例:
```java
@Service
public class MinioService {
@Autowired
private MinioClient minioClient;
/**
* 上传文件
* @param bucketName 存储桶名称
* @param objectName 文件名称
* @param filePath 文件路径
* @throws Exception
*/
public void uploadFile(String bucketName, String objectName, String filePath) throws Exception {
// 判断存储桶是否存在,不存在则创建
if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
// 上传文件
minioClient.uploadObject(UploadObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.filename(filePath)
.build());
}
/**
* 下载文件
* @param bucketName 存储桶名称
* @param objectName 文件名称
* @param filePath 文件保存路径
* @throws Exception
*/
public void downloadFile(String bucketName, String objectName, String filePath) throws Exception {
// 下载文件
minioClient.downloadObject(DownloadObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.filename(filePath)
.build());
}
}
```
4. 测试上传和下载功能
在控制器中测试上传和下载功能,例如:
```java
@RestController
public class MinioController {
@Autowired
private MinioService minioService;
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws Exception {
minioService.uploadFile("test-bucket", file.getOriginalFilename(), file.getInputStream());
return "success";
}
@GetMapping("/download")
public void downloadFile(HttpServletResponse response) throws Exception {
InputStream inputStream = minioService.downloadFile("test-bucket", "test.png");
response.setContentType(MediaType.IMAGE_PNG_VALUE);
StreamUtils.copy(inputStream, response.getOutputStream());
}
}
```
以上代码实现了上传和下载文件的功能。
5. 运行代码
运行 Spring Boot 项目,测试 MinIO 的上传和下载功能。
希望能对你有所帮助。
阅读全文