<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.7</version> <!-- 使用最新版本 -->
</dependency>
MinioConfig:
package com.zy.datapickcli;
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 // 确保方法返回 MinioClient 并添加 @Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
FileController:
package com.zy.datapickcli;
import io.minio.GetPresignedObjectUrlArgs;
import io.minio.MinioClient;
import io.minio.http.Method;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
@RestController
public class FileController {
@Autowired
private MinioClient minioClient;
@GetMapping("/presigned-url")
public String getPresignedUrl() throws Exception {
return generatePresignedUrl("kjwl", "20231008135220.png");
}
public String generatePresignedUrl(String bucketName, String objectName) throws Exception {
return minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.method(Method.GET)
.bucket(bucketName)
.object(objectName)
.expiry(1, TimeUnit.HOURS)
.build()
);
}
}
yml:
minio:
endpoint: http://127.0.0.1:9000
access-key: xxx
secret-key: xxx
访问测试: