Spring Boot集成MinIO进行文件存储和管理的详细步骤
目录
- 1. 安装MinIO
- 2. Spring Boot集成MinIO 添加依赖
1. 安装MinIO
使用docker部署MinIO
拉取MinIO镜像:
docker pull minio/minio
这将从Docker Hub中获取最新的MinIO镜像。
创建目录:
mkdir -p /home/minio/config mkdir -p /home/minio/data
这些目录将用于持久化MinIO的数据和配置文件
创建MinIO容器并运行:
docker run -p 9000:9000 -p 9090:9090 \ --net=host \ --name minio \ -d --restart=always \ -e "MINIO_Access_KEY=minioadmin" \ -e "MINIO_SECRET_KEY=minioadmin" \ -v /home/minio/data:/data \ -v /home/minio/config:/root/.minio \ minio/minio server /data --console-address ":9090" -address ":9000"
- 这将启动MinIO服务,使其可以通过主机的9000端口和9090端口进行访问。
- 登录MinIO控制台: 安装完成后,通过浏览器访问MinIO控制台,默认地址为
http://localhost:9000
,使用设置的访问密钥和秘密密钥进行登录。
2. Spring Boot集成MinIO 添加依赖
在pom.XML
中添加以下依赖:
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.5.2</version> </dependency>
配置MinIO
在application.properties
中添加MinIO的配置:
minio.host=http://localhost:9000 minio.access-kwww.devze.comey=minioadmin minio.secret-key=minioadmin minio.bucket=test-bucket
创建MinIO配置类
import io.minio.MinioClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MinioConfig { @Value("${minio.host}") private String host; @Value("${minio.access-key}") private String accessKey; @Value("${minio.secret-key}") private String secretKey; @Bean public MinioClient minioClient() { returphpn MinioClient.builder() .endpoint(host) .credentials(accessKey, secretKey) .build(); } }
创建存储桶
import io.minio.MinioClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MinIOService { @Autowired private MinioClient minioClient; public void createBucket(String bucketName) { if (!minioClient.bucketExists(b -> b.bucket(bucketName))) { minioClient.makeBucket(m -> m.bucket(bucketName)); } } }
文件上传
import io.minio.MinioClient; import io.minio.PutObjectResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import Java.jsio.InputStream; @Service public class FileUploadService { @Autowired private MinioClient minioClient; public String uploadFile(MultipartFile file, String bucketName, String objectName) throws Exception { try (InputStream inputStream = file.getInputStream()) { PutObjectResponse response = minioClient.putObject( PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build()编程客栈 ); return "http://localhost:9000/" + bucketName + "/" + objectName; } } }
文件下载
import io.minio.MinioClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; imp编程客栈ort java.io.InputStream; @RestController public class FileDownloadController { @Autowired private MinioClient minioClient; @GetMapping("/download") public void downloadFile(@RequestParam String bucketName, @RequestParam String objectName, HttpServletResponse response) { try { InputStream stream = minioClient.getObject( GetObjectArgs.builder() .bucket(bucketName) .object(objectName) .build() ); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + objectName); stream.transferTo(response.getOutputStream()); } catch (Exception e) { e.printStackTrace(); } } }
通过以上步骤,你可以在Spring Boot中成功集成并使用MinIO进行文件存储和管理。
到此这篇关于Spring Boot集成MinIO的详细步骤的文章就介绍到这了,更多相关Spring Boot集成MinIO内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论