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 就是不二的选择,简单易用!
还好管理。这比直接上传到服务器上要得劲的多,因为有管理后端。