1.MAVEN
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>4.0.0</version>
</dependency>
2.初始化客户端
private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {
if (minioClient == null) {
try {
minioClient = new MinioClient(minioUrl, minioName,minioPass);
} catch (InvalidEndpointException e) {
e.printStackTrace();
} catch (InvalidPortException e) {
e.printStackTrace();
}
}
return minioClient;
}
3.工具方法
public static String minioUpload(InputStream stream,String relativePath,String bucketName) throws Exception{
initMinio(minioUrl, minioName,minioPass);
if(minioClient.bucketExists(bucketName)) {
log.info("Bucket already exists.");
} else {
minioClient.makeBucket(bucketName);
log.info("create a new bucket.");
}
minioClient.putObject(bucketName,relativePath, stream, stream.available(),"application/octet-stream");
stream.close();
return minioUrl+bucketName+"/"+relativePath;
}
public static InputStream minioDownload(String bucketName,String allPath) {
try {
String relativePath = allPath.substring(allPath.lastIndexOf(bucketName) + bucketName.length() + 1);
return MinioUtil.getMinioFile(bucketName, relativePath);
} catch (Exception e) {
log.error("下载文件" + e);
return null;
}
}
public static String minioDownloadText(String bucketName,String allPath) {
InputStreamReader isr = null;
BufferedReader bf = null;
try {
StringBuilder sb = new StringBuilder();
InputStream in = this.minioDownload(bucketName,allPath);
isr = new InputStreamReader(in, StandardCharsets.UTF_8);
bf = new BufferedReader(isr);
String line;
while ((line = bf.readLine()) != null) {
sb.append(line).append("\n");
}
return sb.toString();
} catch (Exception e) {
log.error("获取文件内容失败" + e);
return null;
} finally {
try {
if(isr != null)
isr.close();
if(bf != null)
bf.close();
} catch (IOException e) {
log.error("获取文件内容-流关闭异常" + e);
}
}
}
4.调用示例
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile file = multipartRequest.getFile("file");
long fileSize = file.getSize();
String fileName = file.getOriginalFilename();
String bucketName = "myBuckName";
String dirPath = "dirPath/123/456";
String relativePath = dirPath+"/"+fileName;
String savePath = MinioUtil.programUpload(file.getInputStream(),relativePath,bucketName);