官网:MinIO | High Performance, Kubernetes Native Object Storage
1.需自定义目录。并且配置好bat配置文件,注意账号密码长度。
minio.bat文件如下
@echo off
REM 声明采用UTF-8编码
chcp 65001
echo.
echo [信息] 运行MinIO文服务器。
echo.
:: 设置窗口标题
title Minio文件服务
:: 设置用户名为myname
setx MINIO_ROOT_USER root
:: 设置密码为mypassword
setx MINIO_ROOT_PASSWORD root666666
cd %~dp0
:: 切换到minio.exe文件所在目录
cd D:\Java\Healthy\miio\minio\bin
:: 启动minio服务
minio.exe server D:\Java\Healthy\miio\minio\data --console-address ":9001" --address ":9000" > D:\Java\Healthy\miio\minio\logs\minio.log
pause
2.就可以打开你配置的文件地址:localhost:9001
3.输入账号密码,生成秘钥。
4.然后配置你的Java项目即可
依赖:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version> <!-- minio 依赖于 okhttp 且版本较高。注意,spring-boot-dependencies 中的不够高 -->
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
yml文件配置
minio:
bucket: health
host: http://localhost:9001
endpoint: http://localhost:9000
accessKey: 8zuRnOZAKtCHIxZGVa30
secretKey: EXO5mHpoc1MWwULPODWGZSJ6SbDHElZoCuQzPzSU
config
@Configuration
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MinioConfig {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
controllor
package com.itheima.health.controller; import com.itheima.health.common.R; import com.itheima.health.config.MinioConfig; import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController @RequestMapping("/setmeal") public class YunController { @Autowired private MinioConfig minioConfig; @PostMapping("/upload") public R upload(@RequestParam("imgFile") MultipartFile file) throws Exception { // 在这里设置你的存储桶名称 String bucketName = "health"; String uploadUrl = minioConfig.getEndpoint();// 上传路径地址 String fileName = file.getOriginalFilename();// 文件名称 try { // 创建连接对象 MinioClient minioClient = MinioClient.builder().endpoint(uploadUrl) .credentials(minioConfig.getAccessKey(), minioConfig.getSecretKey()) .build(); // 判断桶是否存在 boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); // 判断桶是否存在,如果不存在则创建桶 if (!found) { minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); } else { System.out.println("桶已存在"); } // 文件上传 minioClient.putObject(PutObjectArgs.builder().bucket(bucketName) .object(fileName)// 这里是文件名称 .stream(file.getInputStream(), file.getSize(), -1)// 文件内容,文件大小 // .contentType("video/mp4")// 文件的类型,可以不填写 .build()); // 返回路径名称---访问时用 return R.success(uploadUrl + "/" + bucketName + "/" + fileName); } catch (Exception e) { throw new RuntimeException(e); } } }