step1、首先需要处理minio上传文件
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.4</version>
</dependency>
基于minio 8.4.4
上传文件与原先的7.0版本
差距还是有点大的,大版本之间的代码不兼容
/**
* minio的上传地址
*/
@Value("${minio.endpoint}")
private String endpoint;
/**
* 账号
*/
@Value("${minio.access.key}")
private String accessKey;
/**
* 账号密码
*/
@Value("${minio.secret.key}")
private String secretKey;
/**
* 存储桶名称
*/
@Value("${minio.bucket.name}")
private String bucket;
/**
* 上传文件
* @param inputStream 文件流
* @param fileName 文件名称
* @param size 文件大小 long
* @return 上传文件的minio地址 url
*/
@SneakyThrows
@SuppressWarnings("all")
public String upLoadFile(InputStream inputStream, String fileName, Long size) {
// 判断传入参数是否空值
if (!StringUtils.hasLength(bucket)) {
return "bucketName not allowed null";
}
// 创建客户端对象
MinioClient minioClient =
MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
// 拼接图片地址
String url = MessageFormat.format("{0}{1}/{2}", endpoint, bucket, fileName);
log.info("url:{}", url);
minioClient.putObject(
PutObjectArgs.builder().bucket(bucket).object(fileName).stream(
inputStream, size, -1)
.build());
return url;
}
step2、处理网络在线图片地址
/**
* 上传线上图片
* @param imgUrl 在线图片url
* @return 上传文件的minio地址 url
*/
@SneakyThrows
@SuppressWarnings("all")
public String getInputStream(String imgUrl) {
URL url = new URL(imgUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
// 获取图片的大小
int size = conn.getContentLength();
// 通过输入流获取图片数据
InputStream inStream = conn.getInputStream();
return upLoadFile(inStream, MinIoUpLoad.getSuffix(imgUrl), Long.parseLong(String.valueOf(size)));
}