Skip to content

Commit f41616c

Browse files
committed
新增 MinIO 示例
1 parent 9023aa0 commit f41616c

File tree

5 files changed

+128
-3
lines changed

5 files changed

+128
-3
lines changed

lab-72-minio/pom.xml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<groupId>org.springframework.boot</groupId>
7+
<artifactId>spring-boot-starter-parent</artifactId>
8+
<version>2.6.4</version>
9+
<relativePath/> <!-- lookup parent from repository -->
10+
</parent>
11+
<modelVersion>4.0.0</modelVersion>
12+
13+
<artifactId>lab-72-minio</artifactId>
14+
15+
<dependencies>
16+
<!-- 实现对 Spring MVC 的自动化配置 -->
17+
<dependency>
18+
<groupId>org.springframework.boot</groupId>
19+
<artifactId>spring-boot-starter-web</artifactId>
20+
</dependency>
21+
22+
<!-- MinIO 客户端 -->
23+
<dependency>
24+
<groupId>io.minio</groupId>
25+
<artifactId>minio</artifactId>
26+
<version>8.2.2</version>
27+
</dependency>
28+
</dependencies>
29+
30+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package cn.iocoder.springboot.lab72;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class MinIOApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(MinIOApplication.class, args);
11+
}
12+
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package cn.iocoder.springboot.lab72.config;
2+
3+
import io.minio.BucketExistsArgs;
4+
import io.minio.MakeBucketArgs;
5+
import io.minio.MinioClient;
6+
import io.minio.SetBucketPolicyArgs;
7+
import io.minio.errors.*;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
11+
import java.io.IOException;
12+
import java.security.InvalidKeyException;
13+
import java.security.NoSuchAlgorithmException;
14+
15+
@Configuration
16+
public class MinIOConfiguration {
17+
18+
@Bean
19+
public MinioClient minioClient() {
20+
// Minio 配置。实际项目中,定义到 application.yml 配置文件中
21+
String endpoint = "http://127.0.0.1:9000";
22+
String accessKey = "admin";
23+
String secretKey = "password";
24+
25+
// 创建 MinioClient 客户端
26+
return MinioClient.builder()
27+
.endpoint(endpoint)
28+
.credentials(accessKey, secretKey)
29+
.build();
30+
}
31+
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package cn.iocoder.springboot.lab72.controller;
2+
3+
import io.minio.MinioClient;
4+
import io.minio.PutObjectArgs;
5+
import io.minio.RemoveObjectArgs;
6+
import io.minio.errors.*;
7+
import org.springframework.web.bind.annotation.*;
8+
import org.springframework.web.multipart.MultipartFile;
9+
10+
import javax.annotation.Resource;
11+
import java.io.IOException;
12+
import java.security.InvalidKeyException;
13+
import java.security.NoSuchAlgorithmException;
14+
import java.util.UUID;
15+
16+
@RestController
17+
@RequestMapping("/file")
18+
public class FileController {
19+
20+
@Resource
21+
private MinioClient minioClient;
22+
23+
// Minio 配置。实际项目中,定义到 application.yml 配置文件中
24+
private String endpoint = "http://127.0.0.1:9000";
25+
private String bucket = "yudaoyuanma";
26+
27+
@PostMapping("/upload")
28+
public String upload(@RequestParam("file") MultipartFile file) throws Exception {
29+
// 上传
30+
String path = UUID.randomUUID().toString(); // 文件名,使用 UUID 随机
31+
minioClient.putObject(PutObjectArgs.builder()
32+
.bucket(bucket) // 存储桶
33+
.object(path) // 文件名
34+
.stream(file.getInputStream(), file.getSize(), -1) // 文件内容
35+
.contentType(file.getContentType()) // 文件类型
36+
.build());
37+
// 拼接路径
38+
return String.format("%s/%s/%s", endpoint, bucket, path);
39+
}
40+
41+
@DeleteMapping("/delete")
42+
public void delete(@RequestParam("path") String path) throws Exception {
43+
minioClient.removeObject(RemoveObjectArgs.builder()
44+
.bucket(bucket) // 存储桶
45+
.object(path) // 文件名
46+
.build());
47+
}
48+
49+
}

pom.xml

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<!-- <module>lab-06</module>-->
2020
<!-- <module>lab-07</module>-->
2121
<!-- <module>lab-11-spring-data-redis</module>-->
22-
<module>lab-12-mybatis</module>
22+
<!-- <module>lab-12-mybatis</module>-->
2323
<!-- <module>lab-13-spring-data-jpa</module>-->
2424
<!-- <module>lab-14-spring-jdbc-template</module>-->
2525
<!-- <module>lab-15-spring-data-es</module>-->
@@ -31,7 +31,7 @@
3131
<!-- <module>lab-21</module>-->
3232
<!-- <module>lab-22</module>-->
3333
<!-- <module>lab-23</module>-->
34-
<module>lab-24</module>
34+
<!-- <module>lab-24</module>-->
3535
<!-- <module>lab-25</module>-->
3636
<!-- <module>lab-26</module>-->
3737
<!-- <module>lab-27</module>-->
@@ -78,6 +78,7 @@
7878
<!-- <module>lab-68-spring-security-oauth</module>-->
7979
<!-- <module>lab-69-proxy</module>-->
8080
<!-- <module>lab-70-db-doc</module>-->
81+
<!-- <module>lab-71-http-debug</module>-->
8182

8283
<!-- Spring Cloud 示例 -->
8384
<!-- <module>labx-01-spring-cloud-alibaba-nacos-discovery</module>-->
@@ -111,7 +112,7 @@
111112
<!-- <module>labx-28</module>-->
112113
<!-- <module>labx-29-spring-cloud-consul-bus</module>-->
113114
<!-- <module>labx-30-spring-cloud-grpc</module>-->
114-
<module>lab-71-http-debug</module>
115+
<module>lab-72-minio</module>
115116
</modules>
116117

117118
</project>

0 commit comments

Comments
 (0)