欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > SpringBoot整合minio服务

SpringBoot整合minio服务

2024/10/25 16:26:41 来源:https://blog.csdn.net/weixin_74261199/article/details/140791267  浏览:    关键词:SpringBoot整合minio服务

 这里我选用的是JDK1.8 + SpringBoot2.3.12.RELEASE

一、导入依赖

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

二、导入工具类

注意:需要在 endpoint、bucketName、accessKey、secretKey 中指定配置信息

import io.minio.*;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;@Component
public class MinioUtil {// minio服务器ipprivate String endpoint="http://192.168.31.208:5000";// 桶名private String bucketName="minio-test";// access keyprivate String accessKey="minio-test";// secret keyprivate String secretKey="minio-test";/*** @param fileInputStream 要上传文件的输入流* @param minioFileName 推送到minio之后的名称* @return*/public String upload(InputStream fileInputStream, String minioFileName){// 1. 拿到minio客户端MinioClient minioClient= MinioClient.builder().endpoint(endpoint).credentials(accessKey,secretKey).build();// 2. 判断bucket是否存在,若不存在,则创建buckettry {if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())){minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}}catch (Exception e) {e.printStackTrace();};// 3. 上传文件try {minioClient.putObject(PutObjectArgs.builder().object(minioFileName).bucket(bucketName).stream(fileInputStream, fileInputStream.available(), -1).build());}catch (Exception e){e.printStackTrace();System.out.println("上传失败");return null;}String url=endpoint+"/"+bucketName+"/"+minioFileName;return url;}/*** @param multipartFile 要上传的文件* @param minioFileName 要上传到minio的文件名* @return*/public String upload(MultipartFile multipartFile, String minioFileName){String url=null;try {url = upload(multipartFile.getInputStream(),minioFileName);} catch (IOException e) {e.printStackTrace();}return url;}/*** @param multipartFile 要上传的文件*/public String upload(MultipartFile multipartFile){String url=null;try {String minioFileName = UUID.randomUUID() + multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));url = upload(multipartFile.getInputStream(),minioFileName);} catch (IOException e) {e.printStackTrace();}return url;}/*** 下载文件* @param fromMinioFileName 要下载的minio中的文件名* @param toLocalFileName   下载到本地的位置*/public void download(String fromMinioFileName,String toLocalFileName){// 1.创建minio客户端MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey,secretKey).build();// 2.判断桶是否存在try {if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())){System.out.println(bucketName+" 这个桶不存在!");return;}} catch (Exception e) {e.printStackTrace();}// 3.下载文件try {minioClient.downloadObject(DownloadObjectArgs.builder().bucket(bucketName).object(fromMinioFileName).filename(toLocalFileName).build());} catch (Exception e) {e.printStackTrace();System.out.println(fromMinioFileName+" 下载失败!");}}
}

三、在application.yml文件里添加配置

上传视频时,有的视频内存过大,需要在配置文件中配置最大文件内存上限

spring:servlet:multipart:max-file-size: 200MB		# 文件的最大尺寸100MBmax-request-size: 200MB	# 单次请求可以接收文件的最大尺寸为100MB,一般上传视频时会用到

四、上传文件的控制层Controller

import com.xxx.springminio.util.MinioUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;@RestController
public class MinioTestController {@Autowiredprivate MinioUtil minioUtil;@PostMapping("/upload")public String upload(MultipartFile file) throws IOException {return minioUtil.upload(file);}
}

五、测试文件上传

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com