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

下面我会详细讲解如何使用Springboot集成Minio实现文件存储的实现代码,步骤如下:

1. 引入依赖

在Springboot项目中,我们需要引入Minio的Java SDK依赖,如下所示:

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>10.0.8</version>
</dependency>

2. 配置application.yml

在配置文件中添加Minio参数的配置,如下所示:

spring:
  application:
    name: minio-demo
  minio:
    endpoint: http://localhost:9000 # Minio服务器的访问地址
    access-key: minioadmin # 登录Minio的access-key
    secret-key: minioadmin # 登录Minio的secret-key
    bucket-name: my-bucket # 存储文件的桶名
    auto-create-bucket: true # 桶不存在时自动创建,默认为false

3. 配置MinioClient

在Springboot项目中,我们需要配置一个MinioClient对象,如下所示:

@Configuration
public class MinioConfig {

    @Autowired
    private Environment env;

    @Bean
    public MinioClient minioClient() throws InvalidEndpointException, InvalidPortException {
        String endpoint = env.getProperty("spring.minio.endpoint");
        String accessKey = env.getProperty("spring.minio.access-key");
        String secretKey = env.getProperty("spring.minio.secret-key");
        return new MinioClient(endpoint, accessKey, secretKey);
    }
}

4. 存储文件

存储文件有多种方式,例如使用分片上传、使用putObject等方法。下面我们以putObject方法为例:

@RestController
@RequestMapping("/file")
public class FileController {

    @Autowired
    private MinioClient minioClient;

    @Value("${spring.minio.bucket-name}")
    private String bucketName;

    @PostMapping("/upload")
    public String upload(MultipartFile file) throws Exception {
        String fileName = file.getOriginalFilename();
        InputStream inputStream = file.getInputStream();
        long fileSize = file.getSize();
        // 设置Content-Type为image/jpeg
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentType("image/jpeg");
        // 存储文件到Minio服务中
        minioClient.putObject(bucketName, fileName, inputStream, metadata);
        return "upload success";
    }
}

以上代码中,我们首先注入了MinioClient对象,然后使用putObject方法将文件上传到Minio服务中。

5. 下载文件

下载文件也有多种方式,例如使用getObject、使用getObjectUrl等方法。下面我们以getObject方法为例:

@RestController
@RequestMapping("/file")
public class FileController {

    @Autowired
    private MinioClient minioClient;

    @Value("${spring.minio.bucket-name}")
    private String bucketName;

    @GetMapping("/{fileName}")
    public void download(@PathVariable String fileName, HttpServletResponse response) throws Exception {
        // 从Minio服务中获取文件流
        InputStream inputStream = minioClient.getObject(bucketName, fileName);
        // 设置Content-Disposition为attachment(以附件形式下载文件)
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
        // 将文件流复制到response的输出流中
        IOUtils.copy(inputStream, response.getOutputStream());
        response.flushBuffer();
    }
}

以上代码中,我们首先注入了MinioClient对象,然后使用getObject方法从Minio服务中获取文件流,最后将文件流复制到response的输出流中,供客户端下载文件。

通过以上步骤,我们就可以使用Springboot集成Minio实现文件存储的实现代码了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot集成minio实现文件存储的实现代码 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • Ubuntu18.04下将 磁盘挂载在某目录下

    下面是将磁盘挂载在Ubuntu18.04下某目录下的完整攻略。 1. 查看磁盘信息 首先需要查看磁盘信息,确定要挂载的磁盘设备,可以在终端输入以下命令: sudo fdisk -l 命令执行后,会列出所有磁盘分区的信息,找到需要挂载的磁盘设备的名称,一般为/dev/sdX或/dev/nvmeXnX形式的字符串。 2. 创建挂载点 找到磁盘设备之后,需要创建一…

    Linux 2023年5月24日
    00
  • linux安装php7的方法详解

    下面是“Linux安装PHP7的方法详解”攻略的完整过程: 1. 安装PHP7前的准备工作 在安装PHP7之前,我们需要先完成环境的准备工作:安装必要的依赖项(例如cmake、libxml2、libjpeg、libpng等),以及将系统升级至最新版。 1.1 安装cmake 使用以下命令安装cmake: sudo apt-get update sudo ap…

    Linux 2023年5月14日
    00
  • 虚拟机中linux使用本地iso作为yum源的方法

    使用本地iso作为yum源是在虚拟机开发环境中经常使用的方法之一,可以避免在安装软件、更新系统等操作时耗费大量时间等问题。以下是虚拟机中使用本地iso作为yum源的详细攻略: 步骤一:挂载iso文件 首先需要将要使用的iso文件下载并挂载到虚拟机上,这一步可以通过在虚拟机中使用命令行操作完成,以下是一个简单示例: mkdir /mnt/cdrom mount…

    Linux 2023年5月24日
    00
  • Linux安装&卸载mysql5.7

    Linux系统下卸载mysql 停止mysql服务 systemctl stop mysqld.service 查看安装的mysql服务 rpm -qa|grep -i mysql 删除安装的mysql服务 rpm -e –nodeps mysql相关服务 #例如: rpm -e –nodeps mysql-community-client-5.7.26…

    Linux 2023年4月11日
    00
  • Linux运维老司机:CentOS6.9配置安装并配置Rsync

    一、rsync简介 rsync全称remote sync,是一种更高效、可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效,但是rsync本身是一种非加密的传输,可以借助-e选项来设置具备加密功能的承载工具进行加密传输。 二、rsync是linux系统下的数据镜像备份工具。使用快速…

    Linux 2023年4月12日
    00
  • 检查linux网络状态的两个脚本

    一、通过定时收发email检测网络连通性 #/bin/bash echo “Daily test mail” > state.txt mail -s Server_State abc@jb51.net < state.txt rm -df ./state.txt ~                         crontab -e增加如下任务…

    Linux 2023年4月11日
    00
  • linux安装软件时提示软件包不存在的解决方法

    以下是完整攻略: Linux安装软件时提示软件包不存在的解决方法 在使用 Linux 系统的过程中,我们经常需要安装各种软件包来完成各种任务。但是,有时候在尝试安装软件包时,会出现软件包不存在的提示。这时候,我们需要采取一些措施来解决这个问题。 1. 更新软件包管理器 首先,我们需要尝试更新软件包管理器,以确保已经获取了最新的软件包信息。我们可以使用以下命令…

    Linux 2023年5月14日
    00
  • linux 部署apache服务的步骤

    以下是“Linux部署Apache服务的步骤”的完整使用攻略,包含两个示例说明。 步骤 在Linux服务器上安装Apache: sudo apt-get update sudo apt-get install apache2 2.启动Apache服务: bash sudo systemctl start apache2 验证Apache是否正在运行: bas…

    Linux 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部