目录
配置Minio环境
一、下载minio.exe mc.exe
二、设置用户名和密码
用管理员模式打开cmd
三、启动Minio服务器
四、访问WebUI给的地址
SpringBoot整合Minio
一、配置依赖,application.yml
二、代码部分
FileVO
MinioConfig
MinioUploadService
MinioController
三、Postman测试
配置Minio环境
一、下载minio.exe mc.exe
下载地址:https://min.io/download?license=agpl&platform=windows#/windows
记住下面这个图,重要的步骤都在这张图里面
二、设置用户名和密码
用管理员模式打开cmd
然后进入到 minio.exe 所在的目录
再来回顾刚开始的这张图 ,现在来设置用户名和密码
这里的 admin和password可以自定义
setx MINIO_ROOT_USER admin
setx MINIO_ROOT_PASSWORD password
设置完成之后可以在环境变量看见刚刚设置的值
三、启动Minio服务器
现在用命令打开服务器,官网使用powershell,如果你也是用的powershell直接cv下来运行
C:\minio.exe server F:\Data --console-address ":9001"
记得修改路径为自己本地路径
这里我用的是cmd.exe,命令是:
.\minio.exe server D:\WorkSpaces\Minio\data --console-address "127.0.0.1:9000" --address "127.0.0.1:9001"
因为放在代码块里会压缩,这里同时拿出来给各位看一下
.\minio.exe server D:\WorkSpaces\Minio\data --console-address "127.0.0.1:9000" --address "127.0.0.1:9001"
三个色块分别代表的是
①服务器存储的位置 D:\WorkSpaces\Minio\data
②服务端的端口 --console-address "127.0.0.1:9000"
③控制台端口 --address "127.0.0.1:9001"
启动成功之后如上图所示
四、访问WebUI给的地址
http://127.0.0.1:9000
输入WebUI下面给的用户名密码登录
这个Bucket可以理解成是一个仓库,或者说是一个文件夹
自此,Minio的环境就搭建好了
注意:
停止服务在用 Ctrl+C
下次minio启动服务的命令依旧这个
接下来就是将minio与SpringBoot整合
SpringBoot整合Minio
这里我单独创建了一个minio-test项目
一、配置依赖,application.yml
server:port: 8080spring:# 配置文件上传大小限制servlet:multipart:max-file-size: 50MBmax-request-size: 50MBminio:config:access-key: odyssey # 用户账号secret-key: 88888888 # 密码secure: false #如果是true,则用的是https而不是http,默认值是truebucketName: "test2" # 桶的名字 相当于文件夹url: http://127.0.0.1:9001
二、代码部分
FileVO
@Data
public class FileVO {private String url;private String fileName;private Long size;private String extname;
}
MinioConfig
@Data
@Configuration
@ConfigurationProperties(prefix = "minio.config")
public class MinioConfig {/*** 端点*/private String url;/*** 用户名*/private String accessKey;/*** 密码*/private String secretKey;/*** 存储桶名称*/private String bucketName;@Beanpublic MinioClient getMinioClient() {return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();}
}
MinioUploadService
@Slf4j
@Service
public class MinioUploadService {// 注入minio配置文件@Autowiredprivate MinioConfig minioConfig;// 注入minio client@Autowiredprivate MinioClient client;public FileVO upload(MultipartFile file) throws ServerException {FileVO fileVO = new FileVO();try {// 获取文件真实名称String originalFilename = file.getOriginalFilename();// 获取文件的扩展名 例如.jpg .docString extname = originalFilename.substring(originalFilename.lastIndexOf("."));// 构建文件上传相关信息PutObjectArgs args = PutObjectArgs.builder().bucket(minioConfig.getBucketName()).object(originalFilename).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build();// 将文件上传到minio服务器client.putObject(args);log.info("文件上传成功");// 组装文件信息,返回前端 或者存入数据路String url = minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + originalFilename;fileVO.setUrl(url);fileVO.setSize(file.getSize());fileVO.setFileName(originalFilename);fileVO.setExtname(extname);} catch (Exception e) {throw new ServerException("文件上传异常" + e.getCause().toString());}return fileVO;}
}
MinioController
@RestController
@RequestMapping("/file")
public class MinioController {@Autowiredprivate MinioUploadService minioUploadService;@PostMapping("/upload")public FileVO upload(@RequestParam("file") MultipartFile file) throws ServerException {FileVO upload = minioUploadService.upload(file);return upload;}
}
代码部分到此结束,记得安装lombok依赖 导入相应的包~
然后启动项目,项目正常
三、Postman测试
文件我自己选择的是一张图片,然后点击Send
测试成功,现在来看看客户端有没有这条 2344开头的jpg文件
可以在图中看出已经在test2中显示了这个文件,至此,教程结束