1、pom文件
<!-- MinIO 客户端 -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.2.2</version>
</dependency>
2、minio配置类
import io.minio.MinioClient;
import org.springframework.context.annotation.*;
@Configuration
public class MinIOConfiguration {
@Bean
public MinioClient minioClient() {
// Minio 配置。实际项目中,定义到 application.yml 配置文件中
String endpoint = "http://192.168.19.208:9000";
String accessKey = "admin";
String secretKey = "password";
// 创建 MinioClient 客户端
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
3、控制层:
import io.minio.*;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.UUID;
@RestController
@RequestMapping("/file")
@Api(tags = "文件操作")
public class FileController {
@Resource
private MinioClient minioClient;
// Minio 配置。实际项目中,定义到 application.yml 配置文件中
private String endpoint = "http://192.168.19.208:9000";
private String bucket = "yudaoyuanma";
/**
* 上传文件
*/
@PostMapping("/upload")
@ApiOperation("上传文件")
public String upload(@ApiParam(name = "file",value = "文件")@RequestParam("file") MultipartFile file) throws Exception {
String[] strings=file.getOriginalFilename().split("\\.");
String suffix=strings[strings.length-1];
// 上传
String path = UUID.randomUUID().toString()+"."+suffix; // 文件名,使用 UUID 随机
minioClient.putObject(PutObjectArgs.builder()
.bucket(bucket) // 存储桶
.object(path) // 文件名
.stream(file.getInputStream(), file.getSize(), -1) // 文件内容
.contentType(file.getContentType()) // 文件类型
.build());
// 拼接路径
return String.format("%s/%s/%s", endpoint, bucket, path);
}
/**
* 删除文件
*/
@DeleteMapping("/delete")
@ApiOperation("删除文件")
public void delete(@RequestParam("path") String path) throws Exception {
minioClient.removeObject(RemoveObjectArgs.builder()
.bucket(bucket) // 存储桶
.object(path) // 文件名
.build());
}
}