目录
注意:MinioProperties和抛出的LocalException是自定义的类
一.Windows搭建MinIo
1.首先下载MinIo的运行文件
2.在下载路径上cmd进入命令窗口
3.输入启动命令:
minio.exe server E:\Java\MinIo\data
注意:E:\Java\MinIo\data是运行路径,data为自行创建的文件
输入命令后显示如下:
4.访问地址(两个访问地址均可):
localhost:9000
localhost:56328
5.输入用户名和密码登录MinIo
用户名:minioadmin
密码:minioadmin
6.使用minio存储文件需要先创建bucket
7.按照步骤进行操作,放开权限
二.Linux安装MinIo
1.具体命令:
//拉取镜像
docker pull quay.io/minio/minio// 创建数据存储目录
mkdir -p ~/minio/data// 创建minio
docker run \
-p 9001:9000 \
-p 9090:9090 \
--name minio \
-v ~/minio/data:/data \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123456" \
-d \
quay.io/minio/minio server /data --console-address ":9090"
注意:该操作的用户名和密码为:admin和admin123456
三.MinIo的具体使用
注意:这个使用是从本地通过数据流的方式对MinIo的使用
1.引入依赖:
<!-- 模块中加入如下依赖 -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.2</version>
</dependency>
2.实现代码:
①.首先创建controller
@RestController
@RequestMapping("/admin/system")
public class FileUploadController {
@Autowired
private FileUploadService fileUploadService;
@PostMapping("/fileUpload")
public Result fileUpload(@RequestParam("file") MultipartFile file){
//1.获取上传文件
String url = fileUploadService.upload(file);
return Result.build(url, ResultCodeEnum.SUCCESS);
}
}
②.创建service
public interface FileUploadService {
String upload(MultipartFile file);
}
③.书写实现类
@Service
public class FileUploadServiceImpl implements FileUploadService {
@Autowired
private MinioProperties minioProperties;
@Override
public String upload(MultipartFile file) {
try {
// 创建一个Minio的客户端对象
MinioClient minioClient = MinioClient.builder()
.endpoint(minioProperties.getEndpointUrl())
.credentials(minioProperties.getAccessKey(), minioProperties.getSecreKey())
.build();
// 判断bucket yyjh-bucket 是否存在,不存在则添加,存在则提示已存在
boolean found =
minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioProperties.getBucketName()).build());
if (!found) {
// 创建一个新的 'yyjh-bucket'.
minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioProperties.getBucketName()).build());
} else {
System.out.println("Bucket 'yyjh-bucket' 已存在");
}
//获取文件名称
//根据日期对上传文件进行分组,并且通过uuid生成唯一的文件名
String date = DateUtil.format(new Date(), "yyyyMMdd");
String uuid = UUID.randomUUID().toString().replaceAll("-","");
String filename = date + "/" + uuid + file.getOriginalFilename();
//通过流获取文件
InputStream inputStream = file.getInputStream();
//文件上传 使用流的方式上传
minioClient.putObject(PutObjectArgs.builder()
.bucket(minioProperties.getBucketName())
.object(filename)
.stream(inputStream,file.getSize(),-1)
.build());
//获取上传文件在minio的路径
String url = minioProperties.getEndpointUrl() + "/" + minioProperties.getBucketName() + "/" + filename;
return url;
} catch (Exception e) {
e.printStackTrace();
throw new LocalException(ResultCodeEnum.SYSTEM_ERROR);
}
}
}
④.添加配置文件
注意:MinioProperties和抛出的LocalException是自定义的类
以下代码是放在.xml配置文件中
yyjh:
minio:
endpointUrl: http://127.0.0.1:9000
accessKey: minioadmin
secreKey: minioadmin
bucketName: yyjh-bucket
@Data
@ConfigurationProperties(prefix = "yyjh.minio")
public class MinioProperties {
private String endpointUrl;
private String accessKey;
private String secreKey;
private String bucketName;
}
⑤.让配置生效:
在启动类类上加
@EnableConfigurationProperties(value = {MinioProperties.class})