返回顶部
首页 > 资讯 > 后端开发 > Python >Springboot集成minio实现文件存储的实现代码
  • 458
分享到

Springboot集成minio实现文件存储的实现代码

2024-04-02 19:04:59 458人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 安装部署1.1 linux 简单部署1.2 Docker 部署2. Spring Boot 整合3. 问题记录4. 项目地址在我们平时做项目的时候,文件存储是个很常见的需求

在我们平时做项目的时候,文件存储是个很常见的需求。这时候我们就会用到对象存储服务,平时我们可能会选择OSS、AWS S3这类第三方服务。今天带大家搭建一款自己的对象存储服务,带可视化管理,用起来也挺简单。

MiNIO 是一款基于Go语言的高性能对象存储服务,它采用了Apache License v2.0开源协议,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

1. 安装部署

1.1 Linux 简单部署

wget https://dl.min.io/server/minio/release/linux-amd64/minio

chmod +x minio 

MINIO_ROOT_USER=admin MINIO_ROOT_PASSWord=123456 

##启动并指定端口
./minio server /mnt/data --console-address ":9001"

## 或者后台启动
nohup ./minio server /mnt/data  >  /opt/minio/minio.log 2>&1 &#

image-20220312150958112

然后访问对应地址即可:云服务器的话记得去安全组打开对应端口,账号密码如图所示:

image-20220312151047653

1.2 Docker 部署

#下载MinIO的Docker镜像 
docker pull minio/minio 
#--console-address指定MinIO Console的运行端口 (否则会随机端口运行) 暴露端口9001或者9000 
docker run -p 9090:9000 -p 9001:9001 --name minio \ -v /mydata/minio/data:/data \ -e MINIO_ROOT_USER=minioadmin \ -e MINIO_ROOT_PASSWORD=minioadmin \ -d minio/minio server /data --console-address ":9001"

2. spring boot 整合

添加相关依赖

<!--        引入minio依赖-->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.0.3</version>
</dependency>

添加相关配置信息

默认安装不指定Access key 和Secret key 的话都是minioadmin, Endpoint则为服务器api地址.

spring:
  # 配置文件上传大小限制
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB

# minio 参数配置
minio:
  endpoint: Http://127.0.01:9000
  accessKey: minioadmin
  secreTKEy: minioadmin

注入客户端

将客户端注入Spring容器中,使用的时候直接获取即可。

@Configuration
public class Minioconfig {

    @Value("${minio.endpoint}")
    private String endpoint;
    @Value("${minio.accessKey}")
    private String accessKey;
    @Value("${minio.secretKey}")
    private String secretKey;

    
    @Bean
    public MinioClient minioClient() {

        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .build();
    }
}

编写相关业务代码

编写相关业务代码,上传图片后将相关的路径回传。


public MinIoUploadVo upload(String strDir, MultipartFile multipartFile) throws Exception {

    // bucket 不存在,创建
    if (!this.bucketExists(strDir)) {
        this.makeBucket(strDir);
    }
    InputStream inputStream = multipartFile.getInputStream();
    // 创建一个 headers
    Map<String, String> headers = new HashMap<>();
    // 添加请求头 文件的ContentType 动态配置 multipartFile.getContentType()
    headers.put("Content-Type", "application/octet-stream");

    String fileName = multipartFile.getOriginalFilename();

    String minFileName = minFileName(fileName);
    instance.putObject(
            PutObjectArgs.builder().bucket(strDir).object(minFileName).stream(
                    inputStream, inputStream.available(), -1) // PutObjectOptions,上传配置(文件大小,内存中文件分片大小)
                    .headers(headers)
                    .build());
    String url = endpoint.concat("/").concat(strDir).concat("/").concat(minFileName);
    // 返回生成文件名、访问路径
    return new MinIoUploadVo(strDir, fileName, minFileName, url);
}

上传文件接口

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public R upload(MultipartFile file, HttpServletRequest request) throws IOException {
    String strDir = request.getParameter("bucketName") == null ? "car" : request.getParameter("bucketName");

    try {
        MinIoUploadVo uploadVo = miniOService.upload(strDir, file);
        return R.ok().message("文件上传成功").data(uploadVo);
    } catch (Exception e) {
        log.error("上传文件失败,msg={}", e.getMessage());
        e.printStackTrace();
        return R.error();
    }
}

测试相关接口

image-20220312221827560

如果不能访问该地址 ,记得去开启相关权限。

image-20220312221903349

3. 问题记录

S3 API Request made to Console port. S3 Requests should be sent to API port.

image-20220312172858000

原因是配置文件里面用了Console 控制台的端口,应该使用API端口:

image-20220312173013584

4. 项目地址

更多Demo案例可以前往我的个人仓库查看 正在逐步更新中。

https://gitee.com/cl1429745331/java-coder

到此这篇关于SpringBoot集成minio实现文件存储的实现代码的文章就介绍到这了,更多相关Springboot minio文件存储内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Springboot集成minio实现文件存储的实现代码

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

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

猜你喜欢
  • Springboot集成minio实现文件存储的实现代码
    目录1. 安装部署1.1 Linux 简单部署1.2 Docker 部署2. Spring boot 整合3. 问题记录4. 项目地址在我们平时做项目的时候,文件存储是个很常见的需求...
    99+
    2024-04-02
  • Springboot怎么集成minio实现文件存储
    本篇内容主要讲解“Springboot怎么集成minio实现文件存储”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot怎么集成minio实现文件存储”吧!MinIO 是一款基于G...
    99+
    2023-06-29
  • SpringBoot使用Minio进行文件存储的实现
    目录一、minio二、SpringBoot 使用 Minio 进行文件存储三、测试一、minio MinIO 是一个高性能的对象存储原生支持 Kubernetes 部署的解决方案。 ...
    99+
    2024-04-02
  • MinIO实现文件上传存储
    MinIO 目录MinIO概念MinIO下载安装启动下载安装启动 MinIO实现上传文件导入maven坐标在application文件添加配置实现代码 目录 MinIO概念...
    99+
    2023-09-02
    java
  • SpringBoot集成cache缓存的实现
    前言   日常开发中,缓存是解决数据库压力的一种方案,通常用于频繁查询的数据,例如新闻中的热点新闻,本文记录springboot中使用cache缓存。   官方文档介绍:https:...
    99+
    2024-04-02
  • springboot集成ftp实现文件上传
    本文实例为大家分享了springboot集成ftp实现文件上传的具体代码,供大家参考,具体内容如下 1、FileUtil package io.renren.modules.os...
    99+
    2024-04-02
  • SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码
    Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新到3.1.1。Mybatis-Plus原生提供了很多单表操作的方法,极大简化了繁琐的curd的操作,同时又支持xm...
    99+
    2024-04-02
  • Android实现文件存储并读取的示例代码
    要求: 输入文件名,文件内容分别存储在手机内存和外存中,并且都可以读去取出来。 步骤: 1.创建一个名为CDsaveFile的Android项目 2.编写布局文件a...
    99+
    2022-06-06
    示例 存储 Android
  • Springboot怎么整合minio实现文件服务
    本篇内容介绍了“Springboot怎么整合minio实现文件服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先pom文件引入相关依赖&...
    99+
    2023-06-30
  • SpringBoot集成Druid的实例代码
    快速开始 依赖 <dependency> <groupId>com.alibaba</groupId> ...
    99+
    2024-04-02
  • SpringBoot集成极光推送完整实现代码
    目录1.pom.xml2.application.yml3.MyJPushClient4.test工作中经常会遇到服务器向App推送消息的需求,一般企业中选择用极光推送的比较多,在集...
    99+
    2024-04-02
  • SpringBoot集成Caffeine缓存的实现步骤
    目录Maven依赖 配置 示例 Maven依赖 要开始使用咖啡因Caffeine和Spring Boot,我们首先添加spring-boot-starter-cache和咖啡因Ca...
    99+
    2024-04-02
  • SpringBoot 集成MongoDB实现文件上传功能
    目录前言环境代码实现测试源码前言 记录下SpringBoot集成MongoDB实现文件上传的步骤MongoDB - 5.0.6安装包 链接: https://pan.baidu.co...
    99+
    2024-04-02
  • RocketMQ存储文件的实现
    RocketMQ存储路径默认是${ROCKRTMQ_HOME}/store,主要存储消息、主题对应的消息队列的索引等。 1、概述 查看其目录文件 commitlog:消息...
    99+
    2024-04-02
  • SpringBoot集成Swagger3的实现
    目录一,什么是swagger?二,SpringBoot 集成swagger3三,swagger3 注解标签使用一,什么是swagger? 1,  Swagger 是一...
    99+
    2024-04-02
  • 对象存储MinIO(实现文件上传、读取、下载、删除)
    一、 MinIO         MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服 务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/ 虚拟机镜...
    99+
    2023-08-31
    spring boot java mysql
  • SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写
    这篇文章给大家介绍SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新...
    99+
    2023-06-22
  • SpringBoot整合腾讯云COS对象存储实现文件上传的示例代码
    目录1、开通腾讯云对象存储服务2、创建存储桶3、密钥管理,新建密钥4、yml配置密钥、COS信息5、COSConfig配置类6、COS文件上传工具类7、Controller测试上传接...
    99+
    2024-04-02
  • SpringBoot整合MinIO实现文件上传的方法详解
    目录前言1. MinIO 简介2. MinIO 安装3. 整合 Spring Boot4. 配置nginx5. 小结前言 现在 OSS 服务算是一个基础服务了,很多云服务厂商都有提供...
    99+
    2024-04-02
  • Springboot整合minio实现文件服务的教程详解
    首先pom文件引入相关依赖 <!--minio--> <dependency> <groupId...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作