管理控制台
创建一个桶
设置添加名称
设置访问权限
导入依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.0</version>
</dependency>
配置文件
minio:
accessKey: minio //用户名
secretKey: minio123 //密码
bucket: xc //桶名
endpoint: http://192.168.136.150:9000 //访问地址
domain: http://192.168.136.150:9000 //请求地址
配置对象
@ConfigurationProperties(prefix = "minio") // 文件上传 配置前缀file.oss
@Configuration
@Data
public class MinioProperties implements Serializable {
private String accessKey; //用户名
private String secretKey; //密码
private String bucket; //桶名
private String endpoint; //minio访问地址
private String domain; //请求地址
}
初始化MinioClient
@Configuration
public class MinioConfig {
@Autowired
private MinioProperties prop;
@Bean
public MinioClient buildMinioClient(){
return MinioClient
.builder()
.credentials(prop.getAccessKey(),prop.getSecretKey()) //用户名密码
.endpoint(prop.getEndpoint()) //minio访问地址
.build();
}
}
集成测试
@SpringBootTest
@RunWith(SpringRunner.class)
public class MinioTest {
@Autowired
private MinioClient minioClient;
@Autowired
private MinioProperties properties;
@Test
public void testUpload() throws Exception {
//1、指定文件
FileInputStream inputStream = new FileInputStream("D:\\2.jpg");
String filename = "2.jpg";
//2、指定文件上传的位置和文件名称 /images/2022/07/17/uuid +filename
String filepath = "/images/"+new SimpleDateFormat("yyyy/MM/dd/")
.format(new Date()) +
UUID.randomUUID().toString()+filename;
//3、构造PutObjectArgs参数,并发送请求
PutObjectArgs objectArgs = PutObjectArgs.builder()
.contentType("image/jpg") //文件类型
.stream(inputStream, inputStream.available(), -1) //文件流
.bucket(properties.getBucket()) //存储空间
.object(filepath) //文件
.build();
minioClient.putObject(objectArgs);
//4、拼接访问地址
String urlPath = properties.getDomain() +"/" + properties.getBucket() + filepath;
System.out.println(urlPath);
}
}
项目当中
public ResponseResult upload(MultipartFile uploadFile) throws Exception {
//1.获取数据流
InputStream inputStream = uploadFile.getInputStream();
//2.配置上传的请求地址
String filePath = "/images/" + new SimpleDateFormat("yyyy/MM/dd/")
.format(new Date()) + UUID.randomUUID().toString() + uploadFile.getOriginalFilename();
//3、文件上传
//3.1 文件上传对象
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.bucket(properties.getBucket())
.object(filePath)
.stream(inputStream, inputStream.available(), -1)
.contentType("image/jpg")
.build();
//3.2 文件上传
client.putObject(putObjectArgs);
//4、获取请求地址 (访问域名 + bucket + filePath)
String url = properties.getDomain() + "/" + properties.getBucket() + "/" + filePath;
return ResponseResult.okResult(url);
}
具体配置参见官网: