spring boot minio,mini spring

  spring boot minio,mini spring

  00-1010安装minio依赖写配置工具控制器摘要对象存储服务OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务,适合存储任何类型的文件。并且可以选择多种存储类型,从而可以充分优化存储成本。

  00-1010 1.进入官方网站:https://min.io/

  我当前安装的版本是:

  在cmd窗口中,命令行转到minio.exe所在的文件夹,输入以下命令:server后面的地址是你的图片上传后的存储目录。

  minio服务器E:minio

  因为这里的api端口是9000,所以下面的yml需要配置9000端口。

  AccessKey和secretKey需要根据启动窗口上的值进行配置。

  BucketName这个需要自己创建。

  2.成功启动后,访问:127.0.0.1:9000/minio,即可进入minio的控制台。

  我们可以在控制台中创建bucketName,也可以用代码创建它。

  创建存储桶

  实际上,这个bucketName的意思是文件夹。我们要上传文件到哪个bucketName,我们要上传文件到相应的目录。

  如果需要使用minio,必须开启他的服务。

  

目录

!-Minio-依赖项groupIdio.minio/groupId项目Minio/项目ID版本8 . 0 . 3/版本/依赖项yml配置

 

  spring: # Servlet 3360多部分:最大文件大小: 200mb最大请求大小3360 200mb minio :端点3360 http://127.0.0.133609000访问密钥3 3360 minioadmin secretkey : minioadmin bucket name :测试

  00-1010注册minio客户端,以便您可以使用客户端上传代码中的文件。

  @ Data @ component public class MinIoClientConfig { @ Value( $ { minio . endpoint } )私有字符串终结点;@Value(${minio.accessKey} )私有字符串accessKey@Value(${minio.secretKey} )私有字符串secretKey/* * *注入minio client * @ return */@ bean public mini o client mini o client(){ return mini o client . builder()。端点(endpoint)。凭证(访问密钥、秘密密钥)。build();}}

  00-1010实体类别:

  @ data public class object item { private String object name;私人长尺寸;}

  h:java;">/** * @description: minio工具类 * @version:3.0 */@Componentpublic class MinioUtilS { @Autowired private MinioClient minioClient; @Value("${minio.bucketName}") private String bucketName; /** * description: 判断bucket是否存在,不存在则创建 * * @return: void */ public void existBucket(String name) { try { boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(name).build()); if (!exists) { minioClient.makeBucket(MakeBucketArgs.builder().bucket(name).build()); } } catch (Exception e) { e.printStackTrace(); } } /** * 创建存储bucket * @param bucketName 存储bucket名称 * @return Boolean */ public Boolean makeBucket(String bucketName) { try { minioClient.makeBucket(MakeBucketArgs.builder() .bucket(bucketName) .build()); } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * 删除存储bucket * @param bucketName 存储bucket名称 * @return Boolean */ public Boolean removeBucket(String bucketName) { try { minioClient.removeBucket(RemoveBucketArgs.builder() .bucket(bucketName) .build()); } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String */ public List<String> upload(MultipartFile[] multipartFile) { List<String> names = new ArrayList<>(multipartFile.length); for (MultipartFile file : multipartFile) { String fileName = file.getOriginalFilename(); String[] split = fileName.split("\."); if (split.length > 1) { fileName = split[0] + "_" + System.currentTimeMillis() + "." + split[1]; } else { fileName = fileName + System.currentTimeMillis(); } InputStream in = null; try { in = file.getInputStream(); minioClient.putObject(PutObjectArgs.builder() .bucket(bucketName) .object(fileName) .stream(in, in.available(), -1) .contentType(file.getContentType()) .build() ); } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } names.add(fileName); } return names; } /** * description: 下载文件 * * @param fileName * @return: org.springframework.http.ResponseEntity<byte [ ]> */ public ResponseEntity<byte[]> download(String fileName) { ResponseEntity<byte[]> responseEntity = null; InputStream in = null; ByteArrayOutputStream out = null; try { in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); out = new ByteArrayOutputStream(); IOUtils.copy(in, out); //封装返回值 byte[] bytes = out.toByteArray(); HttpHeaders headers = new HttpHeaders(); try { headers.add("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } headers.setContentLength(bytes.length); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setAccessControlExposeHeaders(Arrays.asList("*")); responseEntity = new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK); } catch (Exception e) { e.printStackTrace(); } finally { try { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { out.close(); } } catch (IOException e) { e.printStackTrace(); } } return responseEntity; } /** * 查看文件对象 * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ public List<ObjectItem> listObjects(String bucketName) { Iterable<Result<Item>> results = minioClient.listObjects( ListObjectsArgs.builder().bucket(bucketName).build()); List<ObjectItem> objectItems = new ArrayList<>(); try { for (Result<Item> result : results) { Item item = result.get(); ObjectItem objectItem = new ObjectItem(); objectItem.setObjectName(item.objectName()); objectItem.setSize(item.size()); objectItems.add(objectItem); } } catch (Exception e) { e.printStackTrace(); return null; } return objectItems; } /** * 批量删除文件对象 * @param bucketName 存储bucket名称 * @param objects 对象名称集合 */ public Iterable<Result<DeleteError>> removeObjects(String bucketName, List<String> objects) { List<DeleteObject> dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); Iterable<Result<DeleteError>> results = minioClient.removeObjects(RemoveObjectsArgs.builder().bucket(bucketName).objects(dos).build()); return results; }}

 

  

控制器

@RestController@Slf4jpublic class MinioController { @Autowired private MinIoUtil minIoUtil; @Autowired private MinioUtilS minioUtilS; @Value("${minio.endpoint}") private String address; @Value("${minio.bucketName}") private String bucketName; @PostMapping("/upload") public Object upload(MultipartFile file) { List<String> upload = minioUtilS.upload(new MultipartFile[]{file}); return address+"/"+bucketName+"/"+upload.get(0); }}

成功上传:

 

  

 

  

 

  

总结

到此这篇关于springboot整合minio教程的文章就介绍到这了,更多相关springboot整合minio内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: