在Spring Boot中使用MinIO存储文件的流程如下:
- 添加依赖
首先,你需要在项目的pom.xml文件中添加MinIO的Java SDK依赖:
io.minio minio 8.3.0
- 配置MinIO客户端
在Spring Boot的application.properties或application.yml文件中,添加MinIO服务器的相关配置:
# application.properties minio.endpoint=http://localhost:9000 minio.access-key=your_access_key minio.secret-key=your_secret_key
或者
# application.yml minio: endpoint: http://localhost:9000 access-key: your_access_key secret-key: your_secret_key
- 创建MinIO配置类
创建一个配置类,用于初始化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.endpoint}") private String endpoint; @Value("${minio.access-key}") private String accessKey; @Value("${minio.secret-key}") private String secretKey; @Bean public MinioClient minioClient() { return MinioClient.builder() .endpoint(endpoint) .credentials(accessKey, secretKey) .build(); } }
- 使用MinIO客户端存储文件
在需要使用MinIO存储文件的地方,注入MinIO客户端并调用相应的方法。例如,创建一个文件上传服务:
import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; @Service public class FileUploadService { @Autowired private MinioClient minioClient; public void uploadFile(String bucketName, String objectName, MultipartFile file) throws Exception { try (InputStream inputStream = file.getInputStream()) { PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); minioClient.putObject(putObjectArgs); } } }
- 使用文件上传服务
在需要上传文件的地方,调用文件上传服务的uploadFile方法。例如,在一个控制器中:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController public class FileUploadController { @Autowired private FileUploadService fileUploadService; @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { try { fileUploadService.uploadFile("my-bucket", "my-object", file); return "File uploaded successfully"; } catch (Exception e) { e.printStackTrace(); return "File upload failed"; } } }
这样,你就可以在Spring Boot项目中使用MinIO存储文件了。注意,这里的示例代码仅供参考,实际使用时请根据项目需求进行调整。