1.导包
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>3.0.10</version>
</dependency>
2.配置minio服务端路径及登录秘钥
minio:
url: http://localhost:9000
accessKey: minioadmin
secretKey: minioadmin
3.上传文件
@ApiOperation(value = "上传文件")
@PostMapping("/upload")
public String upload(MultipartFile file){
try {
//minio客户端
MinioClient minioClient = new MinioClient(url, accessKey, secretKey);
//校验存储桶是否存在
boolean isExit = minioClient.bucketExists(bucket);
if(isExit){
System.out.println("存储桶已存在!");
}else{
//创建一个名为xxn的存储桶,用于存储上传的文件
minioClient.makeBucket(bucket);
}
//获取文件流
InputStream is = file.getInputStream();
//获取文件名称
String filename = file.getOriginalFilename();
//获取文件类型
String contentType = file.getContentType();
//添加文件到(minio)存储桶中
minioClient.putObject(bucket,filename,is,contentType);
return filename+"上传成功!";
} catch (Exception e) {
e.printStackTrace();
return "上传失败!";
}
}
4.下载文件
@ApiOperation("下载文件")
@GetMapping("/download")
public void download(String filename, HttpServletResponse response){
try {
//minio客户端
MinioClient minioClient = new MinioClient(url, accessKey, secretKey);
// 调用statObject()来判断对象是否存在。如果不存在, statObject()抛出异常,否则则代表对象存在
minioClient.statObject(bucket, filename);
//下载文件流
BufferedInputStream ism = new BufferedInputStream(minioClient.getObject(bucket, filename));
byte[] buf = new byte[1024];
int i=0;
response.reset();
response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
response.setContentType("application/x-msdownload");
response.setCharacterEncoding("utf-8");
BufferedOutputStream osm=new BufferedOutputStream(response.getOutputStream());
while ((i=ism.read(buf))>0){
osm.write(buf,0,i);
}
osm.flush();
osm.close();
} catch (Exception e) {
e.printStackTrace();
}
}