1.MAVEN
io.minio
minio
4.0.0
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 {
//relativePath 截取相对路径(路径+文件名) 例如:/buckName/dirPath/123.txt
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();
//1.获取文件流
InputStream in = this.minioDownload(bucketName,allPath);
//2.根据需要字符集解析内容-此处使用"UTF-8"
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);