当前位置 : 主页 > 操作系统 > centos >

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

来源:互联网 收集:自由互联 发布时间:2023-07-28
下面我会详细讲解如何使用Springboot集成Minio实现文件存储的实现代码,步骤如下: 1. 引入依赖 在Springboot项目中,我们需要引入Minio的Java SDK依赖,如下所示: dependency groupIdio.minio/grou

下面我会详细讲解如何使用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对象,如下所示:

自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用!

@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实现文件存储的实现代码了。

上一篇:CentOS 8 正式发布 基于Red Hat Enterprise Linux 8
下一篇:没有了
网友评论