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日

相关文章

  • Linux ifconfig命令

    Linux ifconfig命令 ifconfig命令是Linux系统中的一个网络管理工具,用于查看和配置网络接口的信息。本文将介绍ifconfig命令的作用和使用方法。 ifconfig命令的作用 ifconfig命令可以用于以下操作: 查看网络接口的配置信息,包括IP地址、子网掩码、MAC地址等。 配置网络接口的信息,包括设置IP地址、子网掩码、网关等。…

    Linux 2023年5月10日
    00
  • ubuntu 下VirtualBox 如何实现共享设置

    下面是在Ubuntu系统下使用VirtualBox实现共享设置的完整攻略: 一、安装VirtualBox 首先需要在Ubuntu系统下安装VirtualBox。可以通过命令行执行以下命令进行安装: sudo apt-get update sudo apt-get install virtualbox 二、创建虚拟机 创建虚拟机是我们需要共享设置的前提。在Vi…

    Linux 2023年5月24日
    00
  • LINUX磁盘分区、格式化、挂载、卸载详细过程

    下面是详细的攻略: LINUX磁盘分区、格式化、挂载、卸载详细过程 磁盘分区 在LINUX系统中,硬盘是通过分区来管理的。为了分离不同的文件系统和数据,我们需要对硬盘进行分区。磁盘可以分成主分区和扩展分区。每个主分区或扩展分区都可以进一步划分为逻辑分区。 我们可以通过fdisk命令进行磁盘分区操作: # 打印磁盘信息,选择要分区的磁盘 fdisk -l fd…

    Linux 2023年5月24日
    00
  • Linux Capability探索实验

    Linux内核从2.1版本开始,就开始支持Capabilities的安全机制。Capabilities安全机制提出的目的在于实现系统特权操作的更加细粒度的访问控制,使用户能够根据实际的安全需求来控制root进程拥有的权限范围,从而取消root进程多余权限带来的安全隐患。在Capabilities机制中,所有权限被分割成比较具体和细小的权限(并将分割出来的每种…

    Linux 2023年4月13日
    00
  • 第六章 第一个Linux驱动程序:统计单词个数

    在本章将进入了最令人激动的时刻,为了是读者在刚开始学习Linux驱动开发时充满期待,没有只提供Helloworld程序。 首先介绍Linux驱动到底是个什么东西,它和我们以前接触过的windows类型差不多,但是操作和工作方式有很大的区别,Linux系统将每一个驱动都映射成一个文件。这些文件成为设备文件或这驱动文件,都保存在/dev目录中。 接下来给出编写L…

    Linux 2023年4月12日
    00
  • Linux slave配置

    说明:master机器为Windows,现将一台Linux机器作为slave进行配置。这台Linux机器为CentOS。 1、在Linux slave上的配置 ①创建名为jenkins用户 #sudo /usr/sbin/useradd -m jenkins -d /home/jenkins   ②设置用户jenkins的密码   #sudo /usr/bi…

    Linux 2023年4月11日
    00
  • c++程序判断系统是Linux还是Windows

      用C++来实现,本来想了很多,后来越写越烂,而且结果总是不尽人意,干脆这样子好了: 1 int main() { 2 int judge = system(“cls”); 3 if(judge == 0) cout << “Windows!” << endl; 4 else cout << “Linux!” <&…

    Linux 2023年4月13日
    00
  • Linux下的Java配置与tomcat配置

    下面是关于”Linux下的Java配置与tomcat配置”的完整攻略。 一、Java配置 1. 安装Java 首先我们需要在Linux环境下安装Java,可以通过以下命令进行安装: sudo apt update sudo apt install default-jdk 安装完成后,可以通过java -version命令来检查Java是否成功安装。 2. 配…

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