要在Spring Boot中整合Minio实现文件上传和下载,可以按照以下步骤进行操作:
添加Minio客户端依赖 在pom.xml
文件中添加Minio客户端的依赖:
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.8</version>
</dependency>
配置Minio连接信息 在application.properties
或application.yml
文件中添加Minio连接信息:
spring.minio.url=http://localhost:9000
spring.minio.accessKey=minio-access-key
spring.minio.secretKey=minio-secret-key
以上就是在Spring Boot中整合Minio实现文件上传和下载的步骤
-
可以根据实际情况修改URL、Access Key和Secret Key。
-
创建Minio服务类 创建一个MinioService类,用于封装Minio相关操作的逻辑:
-
import io.minio.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.InputStream; @Service public class MinioService { @Value("${spring.minio.url}") private String minioUrl; @Value("${spring.minio.accessKey}") private String accessKey; @Value("${spring.minio.secretKey}") private String secretKey; public void uploadFile(String bucketName, String objectName, InputStream inputStream) throws Exception { MinioClient minioClient = MinioClient.builder() .endpoint(minioUrl) .credentials(accessKey, secretKey) .build(); minioClient.putObject(PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(inputStream, -1, 10485760) .build()); } public InputStream downloadFile(String bucketName, String objectName) throws Exception { MinioClient minioClient = MinioClient.builder() .endpoint(minioUrl) .credentials(accessKey, secretKey) .build(); return minioClient.getObject(GetObjectArgs.builder() .bucket(bucketName) .object(objectName) .build()); } }
-
在上传文件的方法中,创建MinioClient对象并使用
putObject
方法上传文件流到指定的bucket和object。 在下载文件的方法中,创建MinioClient对象并使用getObject
方法获取文件的输入流。 -
创建文件上传和下载的Controller 创建一个Controller类,提供文件上传和下载的接口
-
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; @RestController @RequestMapping("/files") public class FileController { @Autowired private MinioService minioService; @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public void uploadFile(@RequestParam("file") MultipartFile file) throws Exception { String bucketName = "your-bucket-name"; String objectName = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); minioService.uploadFile(bucketName, objectName, inputStream); } @GetMapping(value = "/download") public InputStream downloadFile(@RequestParam("bucket") String bucketName, @RequestParam("file") String objectName) throws Exception { return minioService.downloadFile(bucketName, objectName); } }
-
在上传文件的接口中,获取到文件的输入流,然后调用MinioService的uploadFile方法上传文件。 在下载文件的接口中,调用MinioService的downloadFile方法获取文件的输入流。
-
启动应用并测试 启动Spring Boot应用后,可以使用Postman等工具测试文件上传和下载的接口。
- 文件上传:发送一个POST请求到
/files/upload
接口,通过form-data方式上传文件。 - 文件下载:发送一个GET请求到
/files/download
接口,同时传递bucket和file参数。
- 文件上传:发送一个POST请求到