iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java整合MinIO实现文件管理
  • 690
分享到

Java整合MinIO实现文件管理

javadocker容器 2023-09-06 21:09:17 690人浏览 八月长安
摘要

MiNIO Minio基于Apache License 2.0开源协议的对象存储服务。它兼容Amazon S3云存储接口。适合存储非结构化数据,如图片,音频,视频,日志等。 MinIo基础概念 Obj

MiNIO

Minio基于Apache License 2.0开源协议的对象存储服务。它兼容Amazon S3云存储接口。适合存储非结构化数据,如图片,音频,视频,日志等。

MinIo基础概念

  • Object:存储到Minio的基本对象,如文件字节流,Anything
  • Bucket:用来存储Object的逻辑空间。每个Bucket之间的数据是相互隔离的。对于客户端而言,就相当于一个存放文件的顶层文件夹。
  • Drive:即存储数据的磁盘,在MiniO启动时,以参数的方式传入。Minio中所有的对象数据都会存储在Drive里
  • Set:即-组Drive集合分布式部署根据集群规模自动划分一个或多个Set,每个Set中的Drive分布在不同位置。一个对象存
    储在一个Set上。一个对象存储在一个Set上,一个集群划分为多个Set,一个Set包含的Drive数量是固定的,默认由系统根据集群规模自动计算得出
    一个Set中的Drive尽可能分布在不同的节点上。

Docker运行

本次直接基于Docker来运行MinIo

拉取镜像

 docker pull minio/minio

运行镜像

docker run --privileged -d -it -p 9000:9000 -p 9111:9111--name minio -e "MINIO_ROOT_USER=minioadmin" --privileged=true-e "MINIO_ROOT_PASSWord=minio@123456"-v /Users/wangyupeng/data/minio/data:/data-v /Users/wangyupeng/data/minio/config:/root/.minio minio/minio server /data--console-address ":9111" -address ":9000"
  • 运行命令,重要参数说明

--privileged

container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。

MINIO_ROOT_USER

登陆管理界面的用户名

MINIO_ROOT_PASSWORD

登陆管理页面密码

-V

第一个-v 是设置数据存放目录,第二个-v是配置目录

--console-address

管理界面 端口设置,一定要和其中一个-p参数的端口对上,不指定的话会随机分配端口

-address

api访问端口

--name

容器运行的名字

查看运行日志

docker logs minio
  • 出现下面的日志,表示容器运行成功

访问minio

浏览器输入Http://127.0.0.1:9111,输入设置的MINIO_ROOT_USERMINIO_ROOT_PASSWORD就能登录了,到此我们已经将minio运行起来了。

SpringBoot整合MinIO

引入依赖

    io.minio    minio    8.5.2

配置

server:  port: 9999spring:  servlet:    multipart:      max-file-size: 10MB      max-request-size: 10MB  minio:    access-key: minioadmin      #key就是docker初始化是设置的,密钥相同    secret-key: minio@123456    url: http://localhost:9000    bucket-name: admin   # 登陆minio创建的文件桶

构建配置类

package org.triumphxx.minio.config;import io.minio.Minioclient;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration@ConfigurationProperties(prefix = "spring.minio")@Datapublic class MinioConfiguration {        private String accessKey;        private String secreTKEy;        private String url;        private String bucketName;        @Bean    public MinioClient minioClient() {        return MinioClient.builder()                .endpoint(url)                .credentials(accessKey, secretKey)                .build();    }}

构建操作minio的服务类

package org.triumphxx.minio.service;import io.minio.GetPresignedObjectUrlArgs;import io.minio.MinioClient;import io.minio.PostPolicy;import io.minio.PutObjectArgs;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.WEB.multipart.MultipartFile;import org.triumphxx.minio.config.MinioConfiguration;import io.minio.http.Method;import java.io.InputStream;import java.time.ZonedDateTime;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;@Service@Slf4jpublic class MiniOService {    @Autowired    private MinioClient minioClient;    @Autowired    private MinioConfiguration configuration;        public Map getPolicyUrl(String fileName, ZonedDateTime time) {        PostPolicy postPolicy = new PostPolicy(configuration.getBucketName(), time);        postPolicy.addEqualsCondition("key", fileName);        try {            Map<String, String> map = minioClient.getPresignedPostFORMData(postPolicy);            HashMap<String, String> policyMap = new HashMap<>();            map.forEach((k,v)->{                policyMap.put(k.replaceAll("-",""),v);            });            policyMap.put("host",configuration.getUrl()+"/"+configuration.getBucketName());            return policyMap;        }  catch (Exception e) {            e.printStackTrace();        }        return null;    }        public String getFileUrl(String objectName,int time, TimeUnit timeUnit) {        try {            return minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()                    .method(Method.GET)                    .bucket(configuration.getBucketName())                    .object(objectName)                    .expiry(time, timeUnit).build());        } catch (Exception e) {            e.printStackTrace();        }        return null;    }        public void uploadToFile(MultipartFile file) {        // 使用putObject上传一个文件到存储桶中。        try {            InputStream inputStream = file.getInputStream();            String fileName = file.getOriginalFilename();            log.info("上传的文件名为:{}",fileName);            minioClient.putObject(PutObjectArgs.builder()                    .bucket(configuration.getBucketName())                    .object(fileName.substring(0,fileName.indexOf(".")))                    .stream(inputStream, file.getSize(), -1)                    .contentType(file.getContentType())                    .build());        } catch (Exception e){            e.printStackTrace();        }    }        public String getUrl(String objectName, int time, TimeUnit timeUnit) {        String url = null;        try {            url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()                    .method(Method.GET)                    .bucket(configuration.getBucketName())                    .object(objectName)                    .expiry(time, timeUnit).build());        }catch (Exception e){            e.printStackTrace();        }        return url;    }}

创建测试

package org.triumphxx.minio.controller;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import org.triumphxx.minio.service.MinIoService;import javax.annotation.Resource;import java.time.ZonedDateTime;import java.util.Map;import java.util.concurrent.TimeUnit;@RestControllerpublic class MinIoController {    @Resource    MinIoService minIoService;        @PostMapping("/upload")    public void uploadToFile(@RequestParam("file") MultipartFile file){        minIoService.uploadToFile(file);    }        @PostMapping("/uploadToFileInputStream")    public void uploadToFileInputStream(@RequestParam("file") MultipartFile file){        minIoService.uploadToFile(file);    }        @GetMapping("/getFileUrl")    public String getFileUrl(@RequestParam("name") String name , @RequestParam("time") int time){       return minIoService.getUrl(name,time, TimeUnit.DAYS);    }        @PostMapping("/getPolicyUrl")    public Map getPolicyUrl(@RequestParam("name") String name){        return minIoService.getPolicyUrl(name, ZonedDateTime.now());    }        @PostMapping("/getTempFileUrl")    public String getTempFileUrl(@RequestParam("name") String name, @RequestParam("time") int time){        return minIoService.getFileUrl(name, time,TimeUnit.DAYS);    }}

使用postman测试

查看上传的图片

看到如下图片表示上传成功!

小结

本篇文章,一起探讨了使用docker运行minio,并且使用springboot整合,实现文件的上传。 源码地址源码传送门

在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_45077847/article/details/131265360

--结束END--

本文标题: Java整合MinIO实现文件管理

本文链接: https://www.lsjlt.com/news/397584.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java整合MinIO实现文件管理
    MinIo MinIO基于Apache License 2.0开源协议的对象存储服务。它兼容Amazon S3云存储接口。适合存储非结构化数据,如图片,音频,视频,日志等。 MinIo基础概念 Obj...
    99+
    2023-09-06
    java docker 容器
  • Springboot怎么整合minio实现文件服务
    本篇内容介绍了“Springboot怎么整合minio实现文件服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先pom文件引入相关依赖&...
    99+
    2023-06-30
  • SpringBoot整合Minio实现上传文件的完整步骤记录
    目录Minio安装 Minio使用docker安装拉取镜像启动使用9000端口 登录控制台创建存储桶设置桶权限创建 Java 客户端依赖配置文件配置文件配置类创建 minio 客户端...
    99+
    2024-04-02
  • Springboot整合minio实现文件服务的教程详解
    首先pom文件引入相关依赖 <!--minio--> <dependency> <groupId...
    99+
    2024-04-02
  • SpringBoot整合MinIO实现文件上传的方法详解
    目录前言1. MinIO 简介2. MinIO 安装3. 整合 Spring Boot4. 配置nginx5. 小结前言 现在 OSS 服务算是一个基础服务了,很多云服务厂商都有提供...
    99+
    2024-04-02
  • SpringBoot怎么整合Minio文件存储
    这篇“SpringBoot怎么整合Minio文件存储”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么整...
    99+
    2023-06-29
  • SpringBoot 2.x怎么整合MinIo文件服务
    本篇内容主要讲解“SpringBoot 2.x怎么整合MinIo文件服务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot 2.x怎么整合MinIo文件服务”吧!MinIO 是高...
    99+
    2023-06-03
  • Java怎么实现整合文件上传到FastDFS
    这篇文章主要介绍Java怎么实现整合文件上传到FastDFS,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.引入fastdfs依赖到pom.xml     &nbs...
    99+
    2023-06-29
  • springboot整合minio实现文件上传与下载且支持链接永久访问
    目录1、minio部署2、项目搭建3、文件上传4、文件下载5、文件永久链接下载1、minio部署 1.1 拉取镜像 docker pull minio/minio 1.2 创建数据...
    99+
    2024-04-02
  • MinIO实现文件上传存储
    MinIO 目录MinIO概念MinIO下载安装启动下载安装启动 MinIO实现上传文件导入maven坐标在application文件添加配置实现代码 目录 MinIO概念...
    99+
    2023-09-02
    java
  • SpringBoot2整合Ehcache组件实现轻量级缓存管理
    目录一、Ehcache缓存简介Hibernate缓存 EhCache缓存特点 对比Redis缓存 二、集成SpringBoot框架 1、核心依赖2、加载配置 3、配置详解三、注解用法...
    99+
    2024-04-02
  • SpringBoot中整合Minio文件存储的安装部署过程
    目录背景Minio安装部署配置pom文件配置yml文件Minio工具类初始化client上传文件下载文件删除文件背景 公司的开发框架集成了附件本地存储,阿里云,华为云等,现项目有要求...
    99+
    2024-04-02
  • 【Java编程系列】Minio实现文件上传下载
    热门系列: 【Java编程系列】Amazon S3实现文件上传下载 目录 热门系列: 1、前言 2、Minio实战代码 2.1 Minio环境部署 2.2 Minio的Sdk对接实现 2.2.1 Minio Maven依赖 2.2.2 m...
    99+
    2023-09-02
    minio minio上传下载 minio存储 minio预览 minio永久访问
  • Java文件管理操作的知识点整理
    目录一.基本文件操作获取及判断文件属性创建及修改文件二.文件读写读文件写文件一.基本文件操作 获取及判断文件属性 代码示例如下: import java.io.IOException...
    99+
    2024-04-02
  • Python怎么实现上传Minio文件
    本篇内容介绍了“Python怎么实现上传Minio文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!环境依赖安装minio以及oss2依赖p...
    99+
    2023-06-25
  • Java实现整合文件上传到FastDFS的方法详细
    目录1.引入fastdfs依赖到pom.xml2.上传代码如下上传纯文件流上传网络资源链接:整体代码如下:3.配置文件如下4.上传效果如下1.引入fastdfs依赖到pom.xml ...
    99+
    2024-04-02
  • python实现自动整理文件
    前言: 平时工作没有养成分类的习惯,整个桌面杂乱无章都是文档和资料,几乎快占满整个屏幕了。所以必须要整理一下了,今天我们来看下用python如何批量将不同后缀的文件移动到同一文件夹。...
    99+
    2024-04-02
  • 使用Springboot整合GridFS实现文件操作
    目录GridFsOperations,实现GridFS文件上传下载删除上传下载删除功能实现测试上传下载删除GridFsOperations,实现GridFS文件上传下载删除 最近学习...
    99+
    2024-04-02
  • SpringBoot整合EasyExcel实现文件导入导出
    目录准备工作 1. 引入pom依赖2. 实现功能 Excel文件下载 3. 日志实体类4. 接口和具体实现 Excel文件导入 5. 文件读取配置 6. 读取测试7. 附上自定义属性...
    99+
    2024-04-02
  • Springboot集成minio实现文件存储的实现代码
    目录1. 安装部署1.1 Linux 简单部署1.2 Docker 部署2. Spring boot 整合3. 问题记录4. 项目地址在我们平时做项目的时候,文件存储是个很常见的需求...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作