springboot+minio8.3.0实现图片增删改查,详细实现
建项目:minio-83-client-springboot

引入start
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.10</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
application.properties
server.port=9000
#minio配置
# 配置文件上传大小限制
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
minio.endpoint.http=http://49.235.127.115:9000
minio.endpoint.accessKey: username
minio.endpoint.secretKey: password
minio.isUse=false
package com.gisinfo.minio.web.conf;
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MinioConfig {
@Value("${minio.endpoint.http}")
private String endpoint;
@Value("${minio.endpoint.accessKey}")
private String accessKey;
@Value("${minio.endpoint.secretKey}")
private String secretKey;
@Value("${minio.isUse}")
private boolean isUse;
/**
* 注入minio 客户端
* @return
*/
@Bean
public MinioClient minioClient(){
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
package com.gisinfo.minio.web.controller;
import cn.hutool.core.io.FileUtil;
import com.gisinfo.minio.web.domain.Results;
import com.gisinfo.minio.web.util.MinioUtilService;
import com.gisinfo.minio.web.util.MultipartFileToFile;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.InputStream;
import java.util.Arrays;
@RestController
public class MinioController {
@Value("${server.port}")
String port;
@Resource
private MinioUtilService minioUtilService;
@PostMapping(value = "/upload")
@SneakyThrows(Exception.class)
public Results upload(@RequestParam("multipartFile") MultipartFile file){
File pFile = MultipartFileToFile.multipartFileToFile(file);
System.out.println(pFile.getName());
minioUtilService.putObject("test001","test001/"+pFile.getName(),FileUtil.getInputStream(pFile));
return Results.success(file.getName());
}
@PostMapping(value = "/uploadFiles")
@SneakyThrows(Exception.class)
public Results uploadFiles(@RequestParam("multipartFiles") MultipartFile[] files){
Arrays.asList(files).stream().forEach(file -> {
try {
File pFile = MultipartFileToFile.multipartFileToFile(file);
minioUtilService.putObject("test001","test001/"+pFile.getName(),FileUtil.getInputStream(pFile));
} catch (Exception e) {
e.printStackTrace();
}
} );
return Results.success("999");
}
@GetMapping("/test")
public String test(){
return "jyc-test "+port;
}
@GetMapping("/downLoad")
@SneakyThrows
public String dowmload(){
boolean objectFile = minioUtilService.getObjectFile("test001", "test001");
System.out.println(objectFile);
return "jyc - load";
}
@GetMapping("/del/{fileName}")
@SneakyThrows
public String del(@PathVariable("fileName") String fileName){
System.out.println("fileName= "+ fileName);
boolean test001 = minioUtilService.removeObject("test001"
