Minio

目录

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

  1. 在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>
    
  2. application.yml

    minio:
         url: http://127.0.0.1:9000
         accessKey: minioadmin
         secretKey: minioadmin
         #这个用来访问图片用的
         openUrl: http://127.0.0.1:9000
         #bucket名称不能使用特殊符号包括_下划线
         bucket: pic 
    
  3. 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);
           }
      }
    

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦