不多废话直接上代码
安装一系列请关注官方文档https://docs.min.io/cn/minio-quickstart-guide.html
导包必须的
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>6.0.8</version> </dependency>
* 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常
* 上传文件controller
* @param file 资源
* @return R(bucketName, filename)
* Constant.BUCKET_NAME为存储bucket
*/
@PostMapping("/upload")
public R<Map<String, String>> upload(@RequestParam("file") MultipartFile file) {
String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
Map<String, String> resultMap = new HashMap<>(4);
resultMap.put("bucketName", Constant.BUCKET_NAME);
resultMap.put("fileName", fileName);
try {
//上传
minioTemplate.putObject(Constant.BUCKET_NAME, fileName, file.getInputStream());
//获取
ObjectStat objectInfo = minioTemplate.getObjectInfo(Constant.BUCKET_NAME, fileName);
//输出获取内容
System.out.println("-------------------->"+objectInfo);
} catch (Exception e) {
log.error("上传失败", e);
return new R().error(e.getLocalizedMessage());
}
return new R(resultMap);
}
/**
* 获取文件
*
* @param fileName 文件空间/名称
* @param response
* @return
*/
@GetMapping("/{fileName}")
public void file(@PathVariable String fileName, HttpServletResponse response) {
Integer separator = fileName.lastIndexOf(StrUtil.DASHED);
try (InputStream inputStream = minioTemplate.getObject(fileName.substring(0, separator), fileName.substring(separator + 1, fileName.length()))) {
response.setContentType("application/octet-stream; charset=UTF-8");
//response.setContentType("image/jpg");
IoUtil.copy(inputStream, response.getOutputStream());
} catch (Exception e) {
log.error("文件读取异常", e);
}
}
/**
minio 交互类
*/
@RequiredArgsConstructor
public class MinioTemplate implements InitializingBean {
//url
@Value("${minio.url}"