1.启动本地Minio服务
2.打开控制台,获取 accessKey和secretKey
注意:
创建完成后会提示你保存好,一封要保存好!!!!
3.springboot web项目中添加依赖和必要信息
pom文件里添加
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.10</version>
</dependency>
yml文件里添加
spring:
# 配置文件上传大小限制
servlet:
multipart:
max-file-size: 200MB
max-request-size: 200MB
minio:
endpoint: http://localhost:9000
accessKey: 你的accesskey
secretKey: 你的secretkry
bucketName: 你要存文件的桶名
4.定义minio客户端配置类
import io.minio.MinioClient;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Data
@Configuration
public class MinIoClientConfig {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
/**
* 注入minio 客户端
* @return
*/
@Bean
public MinioClient minioClient(){
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
5.minio图片上传工具类
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.UUID;
@Component
public class MinioUtils {
@Autowired
private MinioClient minioClient;
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.bucketName}")
private String bucketName;
public String upload(MultipartFile file) {
//获取原文件名
String fileName = file.getOriginalFilename();
//定义新文件名
String NewFileName = "";
if (fileName != null) {
//新文件名
NewFileName = UUID.randomUUID()
+ fileName.substring(fileName.lastIndexOf("."));
}
try {
InputStream in = file.getInputStream();
minioClient.putObject(PutObjectArgs.builder()
.bucket(bucketName)
.object(NewFileName)//用新文件名存入
.stream(in, in.available(), -1)
.contentType(file.getContentType())
.build());
} catch (Exception e) {
e.printStackTrace();
}
return endpoint + "/" + bucketName + "/" + NewFileName;//返回访问的路径
}
}
6.编写控制器Controller
@Slf4j
@RestController
public class UploadController {
@Autowired
private MinioUtils minioUtils;
@PostMapping("/upload")
public String upload(MultipartFile file) {
String url = minioUtils.upload(file);
log.info("上传成功,url:{}", url);
return url;
}
}
7.测试
测试成功
复制路径到浏览器
返回控制台,刚刚上传的图片也已经过来了