中文文档:https://www.minio.org.cn/docs/minio/kubernetes/upstream/index.html
官网:https://min.io/
官网下载和安装:https://min.io/download#/kubernetes
下载MinIO
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20231214185157.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm
启动MinIO
minio server ~/minio --console-address :9090
后台运行方式
nohup /www/minio/minio server --console-address :9090 /www/minio/data > /www/minio/data/minio.log 2>&1 &
默认账号密码为
用户名:minioadmin
密码:minioadmin
进入页面
如果本机有就不需要安装了
移出旧的docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
使用 yum 安装
# 安装依赖
sudo yum install -y yum-utils
# 配置阿里云镜像
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io
启动docker
sudo systemctl enable docker
sudo systemctl start docker
如果想让里面镜像开机启动
docker run 指令中加入 --restart=always
拉去镜像
docker pull minio/minio
运行
#最近更新的命令
docker run -d \
-p 9000:9000 \
-p 9090:9090 \
--name minio \
-v /home/minio/data:/data \
-e "MINIO_ROOT_USER=用户名" \
-e "MINIO_ROOT_PASSWORD=密码" \
minio/minio server /data --console-address ":9090"
之后访问9090
端口;看到这个页面即为成功
页面展示
创建SpringBoot项目,需要注意的是如果请求结束后想在浏览器中查看需要增加权限!!!
点击这个将其修改为公开
安装依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>JAVAVERSION</version>
</dependency>
设置最大上传大小-SpringBoot中
最好设置下,防止测试时候文件过大无法上传
server.port=8888
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
MinioClient
// 创建连接对象
MinioClient minioClient = MinioClient.builder().endpoint(uploadUrl)
.credentials("bunny", "02120212")
.build();
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
// 判断桶是否存在,如果不存在则创建桶
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
} else {
System.out.println("桶已存在");
}
其中contentType
可以不填写,这个是指文件类型
// 文件上传
minioClient.putObject(PutObjectArgs.builder().bucket(bucketName)
.object(fileName)// 这里是文件名称
.stream(file.getInputStream(), file.getSize(), -1)// 文件内容,文件大小
// .contentType("video/mp4")// 文件的类型,可以不填写
.build());
// 返回路径名称---访问时用
return uploadUrl + "/" + bucketName + "/" + fileName;
在方法中注意使用
try catch
设置请求路径,我这里是post请求
@Tag(name = "上传文件")
@RestController
public class UploadFileController {
@Autowired
private UploadFIleService uploadFIleService;
@Operation(summary = "Upload")
@PostMapping("/uploadFile")
public String uploadFile(@RequestParam("file") MultipartFile multipartFile) {
return uploadFIleService.uploadFIle(multipartFile);
}
}
创建接口和实现类
接口
package com.example.minio.service;
import org.springframework.web.multipart.MultipartFile;
public interface UploadFIleService {
String uploadFIle(MultipartFile file);
}
实现类
package com.example.minio.service.impl;
import com.example.minio.service.UploadFIleService;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@Service
public class UploadFIleServiceImpl implements UploadFIleService {
@Override
public String uploadFIle(MultipartFile file) {
String uploadUrl = "http://192.168.31.140:9000";// 上传路径地址
String bucketName = "bunny-test";// 桶的名称
String fileName = file.getOriginalFilename();// 文件名称
try {
// 创建连接对象
MinioClient minioClient = MinioClient.builder().endpoint(uploadUrl)
.credentials("bunny", "02120212")
.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 uploadUrl + "/" + bucketName + "/" + fileName;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
需要注意的是如果请求结束后想在浏览器中查看需要增加权限!!!
点击这个将其修改为公开
之后访问服务器
文件中已包含,这个桶没有创建,但是不存在自动创建了一个
可以访问
throw new RuntimeException(e);
}
}
}
## 测试请求
需要注意的是如果请求结束后想在浏览器中查看需要增加权限!!!
点击这个将其修改为公开
[外链图片转存中...(img-nequIWuJ-1702822622971)]
之后访问服务器
[外链图片转存中...(img-0Zie22dn-1702822622971)]
文件中已包含,这个桶没有创建,但是不存在自动创建了一个
[外链图片转存中...(img-aegMV599-1702822622971)]
可以访问
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/069326d2bb7142ee8861f8a66ab8f3cc.png)