SpringBoot使用Minio存储文件,并进行上传接口开发
以下是一个使用Spring Boot和MinIO进行文件上传的简单示例:
- 添加MinIO依赖到
pom.xml
:
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>RELEASE_VERSION</version>
</dependency>
将RELEASE_VERSION
替换为当前MinIO客户端库的最新版本。
- 配置MinIO客户端:
@Configuration
public class MinioConfig {
@Value("${minio.url}")
private String minioUrl;
@Value("${minio.access-key}")
private String minioAccessKey;
@Value("${minio.secret-key}")
private String minioSecretKey;
@Bean
public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
return new MinioClient(minioUrl, minioAccessKey, minioSecretKey);
}
}
在application.properties
或application.yml
中配置MinIO的URL、访问密钥和秘密密钥。
- 创建文件上传接口:
@RestController
public class FileUploadController {
@Autowired
private MinioClient minioClient;
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException, InvalidBucketNameException, NoSuchAlgorithmException, InsufficientDataException, ErrorResponseException, XmlParserException, InvalidKeyException, InvalidResponseException, InternalException, InvalidArgumentException {
String bucketName = "my-bucket"; // 使用你的bucket名称
String fileName = file.getOriginalFilename();
// 检查bucket是否存在,不存在则创建
boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
if (!isExist) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
// 上传文件
minioClient.putObject(
PutObjectArgs.builder()
.bucket(bucketName)
.object(fileName)
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(file.getContentType())
.build());
return "File uploaded successfully";
}
}
在上述代码中,uploadFile
方法接收一个MultipartFile
类型的文件,然后使用MinIO客户端将其上传到MinIO服务器。确保替换my-bucket
为你的实际bucket名称。
以上代码提供了一个简单的文件上传接口,并展示了如何在Spring Boot应用程序中集成MinIO。
评论已关闭