1.安装启动
MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。
MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
官网文档:http://docs.minio.org.cn/docs/
使用
1. windows使用minio
2. Linux使用minio
1,下载
去官网下载安装包。不大,49M左右。网址:https://min.io/download#/linux
或者使用命令行下载 :
wget https://dl.min.io/server/minio/release/linux-amd64/minio
2.权限
chmod +x minio
3.启动
MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin ./minio server /home/data
后台启动
nohup ./minio server data > minio.log 2>&1 &
默认的账号密码是minioadmin:minioadmin
默认的访问路径为:ip:9000,可以通过添加启动参数--address 0.0.0.0:8080
进行修改,如果是阿里云或腾讯云记得开启相应端口。
3. 修改密码
默认的账号密码无法通过后台管理界面修改,需要找到config.json修改里面的值 config.json位置:在data/.minio.sys/config目录下,.minio.sys是一个隐藏文件,需要ll -a才能看到。 打开文件,进入insert模式
vim data/.minio.sys/config/config.json
找到access_key和secret_key,修改他们后面跟着的value的值。access_key后的value的值是账号,secret_key后的value的值是密码。
最后重启服务
2.整合Springboot
-
在pom.xml中导入包(自己封装的jar,地址https://github.com/Jacob-yang/jacobyang-tools/packages/979768)
<dependency> <groupId>com.jacobyang</groupId> <artifactId>jacobyang-tool-minio</artifactId> <version>1.0</version> </dependency>
-
application.yml
minio: url: http://127.0.0.1:9000 accessKey: minioadmin secretKey: minioadmin #这个用来访问图片用的 openUrl: http://127.0.0.1:9000 #bucket名称不能使用特殊符号包括_下划线 bucket: pic
-
controller使用
@RestController @RequestMapping("/api/upload") public class MinioApi { @Autowired private MinioUtils minioUtils; @PostMapping(value = "/img") public Object upload(MultipartHttpServletRequest req) { Map<String, MultipartFile> fileMap = req.getFileMap(); // 循环遍历,取出单个文件 List<String> list = new ArrayList<>(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // 获取单个文件 MultipartFile file = entity.getValue(); try { //文件流,桶(已经在yml中配置),文件名,false不生成缩略图/true生成缩略图 String s = minioUtils.uploadFile(file.getInputStream(), null, file.getOriginalFilename(), false); list.add(s); } catch (IOException e) { e.printStackTrace(); } } return list; } @PostMapping(value = "/del") public Object delFile(String url) { return minioUtils.removeFile(url); } @GetMapping(value = "/download") public void download(HttpServletResponse response, String url) { minioUtils.downloadFile(response.getOutputStream(),url); } }