java操作minio文件服务的通用工具类,可以实现使用指定方法就能控制文件的上传下载删除以及更多操作
2025-03-25 21:55:00 13KB java minio
1
在本文中,我们将深入探讨如何使用Java来实现MinIO客户端,以便进行文件的上传和下载操作。MinIO是一个高度可扩展的对象存储服务器,适合用于存储和检索大量的非结构化数据,如图片、文档、视频等。它提供了一个简单、易用的API,允许开发者轻松地集成到自己的应用中。 为了开始开发Java MinIO客户端,我们需要在项目的`pom.xml`文件中添加MinIO的依赖。在以下示例中,我们使用的版本是7.0.2: ```xml io.minio minio 7.0.2 ``` 接下来,我们需要配置MinIO服务器的相关参数,例如URL、访问密钥和秘密密钥。这通常可以通过`application.yml`或`application.properties`文件完成。这里是一个`application.yml`的例子: ```yaml minio: url: http://10.69.94.140:9000 accessKey: 账号 secretKey: 密码 defaultFolder: /Minio ``` 为了读取这些配置,我们可以创建一个名为`MinioProperties`的类,使用Spring的`@ConfigurationProperties`注解来绑定配置: ```java @ConfigurationProperties("minio") @Data public class MinioProperties { private String url; private String accessKey; private String secretKey; private String defaultFolder; } ``` 接着,我们需要一个配置类`SpringConfig`,在这里初始化`MinioClient`对象,并注入`MinioProperties`: ```java @Configuration @EnableConfigurationProperties(MinioProperties.class) @Slf4j public class SpringConfig { @Autowired private MinioProperties minioProperties; @Bean public MinioClient minioClient() { try { return new MinioClient(minioProperties.getUrl(), minioProperties.getAccessKey(), minioProperties.getSecretKey()); } catch (Exception e) { log.error(e.toString()); } return null; } } ``` 现在,我们可以创建一个控制器类`ImageController`来处理文件的获取(显示在浏览器)和下载操作。假设我们有一个`FileService`服务,用于实际的文件操作: ```java @RestController @RequestMapping("/image") @Slf4j @CrossOrigin(origins = "*") public class ImageController { @Autowired private FileService fileService; // 获取图像文件,返回一个可以在浏览器中显示的图像文件 @GetMapping(value = "/get/{bucketName}/{category}/{objectName}/{fileName}", produces = MediaType.IMAGE_JPEG_VALUE) public byte[] get(@PathVariable("bucketName") String bucketName, @PathVariable("category") String category, @PathVariable("objectName") String objectName, @PathVariable("fileName") String fileName) throws Exception { return fileService.getFile(bucketName, category, objectName); } // 下载文件 @GetMapping("/download/{bucketName}/{category}/{objectName}/{fileName}") public void download(@PathVariable("bucketName") String bucketName, @PathVariable("category") String category, @PathVariable("objectName") String objectName, @PathVariable("fileName") String fileName, HttpServletResponse response) { try { fileService.downloadFile(bucketName, category, objectName, fileName, response); } catch (Exception e) { log.error("Error while downloading file: ", e); } } } ``` 在`FileService`类中,`getFile`方法将用于从MinIO服务器上获取文件,而`downloadFile`方法则负责设置响应头,触发浏览器下载。这两个方法的具体实现将取决于你的业务逻辑,但它们通常会使用`MinioClient`对象进行文件操作。 在`downloadFile`方法中,我们需要设置响应头以指示这是一个应被下载的文件,而不是在浏览器中打开。这可以通过设置`Content-Disposition`头来实现,例如: ```java response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); ``` 此外,我们还需要设置`Content-Type`以正确表示文件类型,并设置响应流来传递文件内容。 总结起来,通过上述步骤,我们已经成功地构建了一个基于Java的MinIO客户端,实现了文件的上传和下载功能。这个客户端可以方便地集成到任何Java应用程序中,为存储和检索非结构化数据提供了一种高效、安全的方式。在实际开发中,你可能还需要考虑其他因素,如错误处理、安全性增强、性能优化等,以确保服务的稳定性和可靠性。
2025-01-16 10:21:45 34KB Java minio客户端
1
minio-RELEASE.2021-04-22T15-44-28Z,这是MinIO最后一个 Apache V2.0的版本,minio此后的版本都改为AGPLV3协议了,没法进行商业用途了。这个包包含minio-RELEASE.2021-04-22T15-44-28Z的windows二进制包,linux二进制包及源代码,可放心下载。
2024-07-05 16:10:06 41.46MB MinIO 文件存储 对象存储 分布式存储
1
docker minio官方镜像,完整镜像,可直接导入。使用,避免拉取镜像慢等问题,自测过可用
2024-06-06 14:57:53 49.13MB minio
1
本文为分布式minio的部署+测试文档,MinIo功能基本全部实现,包括Nginx负载均衡部署、Prometheus监控、桶事件(发布到redis)、模拟磁盘故障、cosbench压力测试等等,基本功能全部实现
2024-06-04 09:42:13 21.07MB redis 分布式
1
对象存储,oss,linux,mimio,对象存储,oss,linux,mimio,对象存储,oss,linux,mimio,对象存储,oss,linux,mimio
2024-02-21 20:02:43 22.13MB ceph linux seaweedfs 对象存储
1
新版本配置 export MINIO_ROOT_USER=admin export MINIO_ROOT_PASSWORD=12345678 原旧版本中的配置是MINIO_ACCESS_KEY和MINIO_SECRET_KEY,请注意别在各博客中直接复制把自己的配置写错了,新下载的minio是用不了旧配置滴。
2023-11-01 16:54:07 32.82MB minio
1
源码自编译打包minio,mips64架构可用
2023-09-14 15:28:01 33.32MB minio mips64 龙芯 信创
1
文件存储服务的核心功能是:上传和下载。除了这两个核心功能,还具有: - 可用性:作为基础性服务,通过集群化部署实现高可用 - 配置性:结合nacos配置中心,可动态配置上传下载的方式等配置 - 扩展性:采用策略设计模式能方便的进行扩展,如添加新的OSS服务商等 本系统的文件服务提供两种类型的服务: ​ 1、面对应用系统的通用附件服务 ​ 提供统一的上传接口,屏蔽底层的存储方案(本地存储、FastDFS、MinIo、阿里云存储、七牛云存储等),可独立运行服务 ​ 2、面对用户的网盘服务 ​ 有文件夹和文件的概念,支持大文件分片上传、合并 ​ 3、面对大屏展示的数据统计服务 ​ 有云盘首页数据概览,按照类型/时间等维度统计各种类型文件的大小和数量等 注意:本系统目前提供的存储策略有以上四种方式(即本地存储、FastDFS存储、Minio存储、阿里云OSS存储),后期也可以根据需要扩展其他的存储策略。这种设计方式其实就是策略模式的一个具体应用 本系统的文件存储服务以品达通用权限系统为脚手架,在此基础之上进行开发。为了能够提供统一的上传接口从而屏蔽底层的存储方案
2023-06-19 10:39:34 212.68MB 文件存储服务 minio fastDFS 中台
1
linux版本,minio文件不加密可用的最新版本V20220526
2023-03-18 14:47:37 54.22MB linux minio
1