Spring Boot 整合 MinIO自建对象存储服务

GitHub 地址:GitHub - minio/minio: The Object Store for AI Data Infrastructure

另外,MinIO 可以用来作为云原生应用的主要存储服务,因为云原生应用往往需要更高的吞吐量和更低的延迟,而这些都是 MinIO 的优势。安装过程跳过。

Spring Boot 整合 MinIO

第一步,在 pom.xml 文件中添加 MinIO 的依赖:
 

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

第二步,新建 MinIOController.java,添加 upload 上传接口。

@Controller
@Api(tags = "MinIO上传")
@RequestMapping("/minioController")
@Slf4j
public class MinIOController {
    private static final String bucketName = "tobebetterjavaer";

    @RequestMapping(value = "/upload",method= RequestMethod.POST)
    @ResponseBody
    @ApiOperation("上传")
    public ResultObject<String> upload(@RequestParam("file") MultipartFile file, HttpServletRequest req) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
        try {
            MinioClient minioClient =
                    MinioClient.builder()
                            .endpoint("http://xxx.175:9000")
                            .credentials("minioadmin", "minioadmin")
                            .build();
            boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());

            if (!found) {
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
            } else {
                log.debug("桶 '{}' 存在.", bucketName);
                minioClient.putObject(
                        PutObjectArgs.builder()
                                .bucket(bucketName)
                                .object(FileNameUtil.getFileName("", file.getOriginalFilename()))
                                .stream(file.getInputStream(),file.getInputStream().available(),-1)
                                .build());
            }
        } catch (MinioException e) {
            log.error("MinIO 上传文件出错{}" + e);
            return ResultObject.failed("MinIO 上传文件出错");
        }
        return ResultObject.success("上传成功");
    }
}

整个逻辑非常简单,通过 endpoint、用户名和密码构建 MinioClient 客户端,然后创建桶,最后调用 putObject 方法将文件上传到 MinIO 服务器上。

整个逻辑非常简单,通过 endpoint、用户名和密码构建 MinioClient 客户端,然后创建桶,最后调用 putObject 方法将文件上传到 MinIO 服务器上。

第四步,登录MinIO后台管理,查看刚刚上传的图片。

MinIO 是基于Apache V2 license 100% 开放源代码的,可以无限制、自由免费使用。

MinIO 不仅适合云原生应用,但还特别适合单体应用,对小公司也非常的友好。

如果你的公司不打算上云的话,那么 MinIO 就是很棒的选择;尤其是当公司只是希望搭建一个内部使用的文件存储服务的话,那 MinIO 就是不二的选择,简单易用!

还好管理。这比直接上传到服务器上要得劲的多,因为有管理后端。

相关推荐

  1. 开源项目_搭对象存储服务MinIO

    2024-01-07 00:34:02       17 阅读
  2. Docker搭MinIO私有对象存储

    2024-01-07 00:34:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-07 00:34:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-07 00:34:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-07 00:34:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-07 00:34:02       18 阅读

热门阅读

  1. 详解Nacos和Eureka的区别

    2024-01-07 00:34:02       27 阅读
  2. 【LeetCode】1070. 产品销售分析 III

    2024-01-07 00:34:02       36 阅读
  3. Qt3D类使用说明

    2024-01-07 00:34:02       33 阅读
  4. ros python 接收GPS RTK 串口消息再转发 ros 主题消息

    2024-01-07 00:34:02       43 阅读
  5. Ubuntu中安装和配置SSH的完全指南

    2024-01-07 00:34:02       34 阅读
  6. go 使用 sync.RWMutex

    2024-01-07 00:34:02       42 阅读
  7. ROS 传感器—相机的介绍

    2024-01-07 00:34:02       32 阅读
  8. 存储过程从表中获取数据库名称

    2024-01-07 00:34:02       32 阅读
  9. CAD二开—WblockCloneObjects函数用法

    2024-01-07 00:34:02       39 阅读
  10. 针对CSP-J/S的冲刺练习:Day 3 小结

    2024-01-07 00:34:02       38 阅读
  11. 【PostgreSQL】模式Schema

    2024-01-07 00:34:02       31 阅读
  12. C++11_右值引用

    2024-01-07 00:34:02       27 阅读