介绍
这篇文章主要讲解了基于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客户端实现上传下载文件的方法