基于Java写minio客户端实现上传下载文件的方法

  介绍

这篇文章主要讲解了基于Java写minio客户端实现上传下载文件的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

前言:

确保已经安装了minio的服务端

代码:

砰的一声。xml

& lt; dependency>   & lt; groupId> io.minio   & lt; artifactId> minio   & lt; version> 7.0.2   & lt;/dependency>

应用程序。yml

服务器:   端口:90   minio:   url: http://10.69.94.140:9000   accessKey:账号   secretKey:密码   defaultFolder:/

MinioProperties。java

@ConfigurationProperties (“minio")   @ data   公开课MinioProperties {   私人字符串url;   私人字符串accessKey;   私人字符串secretKey;   私人字符串defaultFolder;   }

SpringConfig。java

@ configuration   @EnableConfigurationProperties (MinioProperties.class)   @Slf4j   公开课SpringConfig {   @ autowired   私人MinioProperties MinioProperties;      @ bean   公共MinioClient MinioClient () {   尝试{   返回新MinioClient (minioProperties.getUrl (), minioProperties.getAccessKey (), minioProperties.getSecretKey ());   }捕捉(异常e) {   log.error (e.toString ());   }   返回null;   }      }

ImagesController。java

@RestController   @RequestMapping (“/image")   @Slf4j   @CrossOrigin(起源=?“)   公开课ImageController {      @ autowired   私人FileService FileService;/* * * * * * *   *图像文件,这个方法返回一个图像类型文件可以显示在浏览器中。   * @param bucketName、系统,每个系统应该属于一个特殊的桶。   * @param类别,一个系统可能包含多个类别   * @param文件名   */@GetMapping (value=https://www.yisu.com/zixun/?/{bucketName}/{类别}/{objectName}/{文件名}”,产生=MediaType.IMAGE_JPEG_VALUE)   公共byte [] get (@PathVariable (bucketName)字符串bucketName @PathVariable(“类别”)字符串类别,   @PathVariable(“对象名”)字符串对象名,   @PathVariable(“文件名”)字符串文件名)抛出异常{   fileService返回。getFile (bucketName、类别、objectName);   }      @GetMapping(“/下载/{bucketName}/{类别}/{objectName}/{文件名}”)   公共空间下载(@PathVariable (bucketName)字符串bucketName @PathVariable(“类别”)字符串类别,   @PathVariable(“对象名”)字符串对象名,   @PathVariable(“文件名”)字符串文件名,HttpServletResponse响应){抛出异常=fileService byte[]缓冲区。getFile (bucketName、类别、objectName);   response.setContentType (MediaType.APPLICATION_OCTET_STREAM_VALUE);   响应。setHeader(“附加”、“依恋;文件名=/" +文件名+ "/");   response.getOutputStream () .write(缓冲);   response.flushBuffer ();   .close response.getOutputStream () ();   }      @PostMapping(“/上传/{bucketName}/{类别}”)   公共字符串上传(@PathVariable (bucketName)字符串bucketName @PathVariable(“类别”)字符串类别,   @RequestParam(“文件”){MultipartFile文件)抛出异常   .toString字符串objectName=UUID.randomUUID () ();   fileService。storeFile (bucketName、类别、objectName, file.getBytes ());   返回字符串。格式(“图像//% s/% s/% s/% s”, bucketName,类别,objectName, file.getOriginalFilename ());   }   }

FilesController。java

@RestController   @RequestMapping (“/files")   @Slf4j   @CrossOrigin(起源=?“)   公开课FilesController {      @ autowired   私人FileService FileService;      @GetMapping(“/下载/{bucketName}/{类别}/{objectName}/{文件名}“)   公共空间下载(@PathVariable (“bucketName")字符串bucketName @PathVariable (“category")字符串的类别,   @PathVariable (“objectName")字符串的objectName, @PathVariable (“fileName")字符串文件名,HttpServletResponse响应)抛出异常{=fileService byte[]缓冲区。getFile (bucketName、类别、objectName);   response.setContentType (MediaType.APPLICATION_OCTET_STREAM_VALUE);   response.setHeader (“Content-disposition"“依恋;文件名=\”;“+文件名+“\““);   response.getOutputStream () .write(缓冲);   response.flushBuffer ();   .close response.getOutputStream () ();   }      @PostMapping(“/上传/{bucketName}/{类别}“)   公共字符串上传(@PathVariable (“bucketName")字符串bucketName @PathVariable (“category")字符串的类别,   @RequestParam (“file"){MultipartFile文件)抛出异常   .toString字符串objectName=UUID.randomUUID () ();   fileService。storeFile (bucketName、类别、objectName, file.getBytes ());   返回String.format(“文件/下载/% s/% s/% s/% s", bucketName,类别,objectName, file.getOriginalFilename ());   }   }

基于Java写minio客户端实现上传下载文件的方法