From dbc95a4f8cb32f78954c4b777c731c20eeb1ef41 Mon Sep 17 00:00:00 2001 From: qi_liang Date: Wed, 9 Sep 2020 07:23:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4minio=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 + .../com/lq/cms/web/sys/UserController.java | 7 +- src/main/java/com/lq/code/util/MinUtil.java | 148 ++++++++++++++++++ src/main/profile/dev/file.properties | 7 +- src/main/profile/dev/jdbc.properties | 2 +- src/main/profile/dev/redis.properties | 4 +- src/main/resources/spring-mybatis-config.xml | 3 + 7 files changed, 173 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/lq/code/util/MinUtil.java diff --git a/pom.xml b/pom.xml index 9a7936b..0c0da45 100644 --- a/pom.xml +++ b/pom.xml @@ -547,6 +547,13 @@ compile + + + io.minio + minio + 7.1.2 + + diff --git a/src/main/java/com/lq/cms/web/sys/UserController.java b/src/main/java/com/lq/cms/web/sys/UserController.java index eca0748..7d9bf67 100755 --- a/src/main/java/com/lq/cms/web/sys/UserController.java +++ b/src/main/java/com/lq/cms/web/sys/UserController.java @@ -55,6 +55,9 @@ public class UserController { @Autowired private SysUserRoleService sysUserRoleService; + @Autowired + private MinUtil minUtil; + @Value("${file.upload}") private String fileLoadPath; @@ -108,7 +111,9 @@ public class UserController { @RequiresPermissions(INDEX_URL+ Constant.PERSSION_MARK+Constant.PERMISSION_UPDATE) @ResponseBody @RequestMapping("/update") - public Object update(SysUserVo vo,@RequestParam(value = "file",required = false) MultipartFile file){ + public Object update(SysUserVo vo,@RequestParam(value = "file",required = false) MultipartFile file) throws IOException { + System.out.println(minUtil); + minUtil.uploadFile(file.getInputStream()); Date nowTime = new Date(); AjaxResult ajaxResult = new AjaxResult(); if (vo!=null&&vo.getId()!=null){ diff --git a/src/main/java/com/lq/code/util/MinUtil.java b/src/main/java/com/lq/code/util/MinUtil.java new file mode 100644 index 0000000..4a77e37 --- /dev/null +++ b/src/main/java/com/lq/code/util/MinUtil.java @@ -0,0 +1,148 @@ +package com.lq.code.util; + +import io.minio.BucketExistsArgs; +import io.minio.MakeBucketArgs; +import io.minio.MinioClient; +import io.minio.PutObjectArgs; +import io.minio.errors.*; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; + +/** + * minio 客户端 + * @author qi + */ +@Component +public class MinUtil { + + /** + * minio服务地址 + */ + @Value("minio.server.url") + private String serverUrl; + + /** + * 存储桶名称 + */ + @Value("minio.bucket.name") + private String bucketName; + + /** + * minio账号 + */ + @Value("minio.accesskey") + private String accessKey; + + /** + * minio密码 + */ + @Value("minio.secretkey") + private String secretKey; + + /** + * 上传图片 + * @param inputStream + * @return + */ + public String uploadFile(InputStream inputStream){ + String fileName = "timg.jpeg"; + //初始化客户端 + MinioClient minioClient = MinioClient.builder() + .endpoint(serverUrl) + .credentials(accessKey,secretKey) + .build(); + + try { + int size = inputStream.available(); + BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build(); + //判断桶是否存在 + boolean isExist = minioClient.bucketExists(bucketExistsArgs); + if (!isExist){ + minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); + } + PutObjectArgs putObjectArgs = PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(inputStream,size,-1).build(); + minioClient.putObject(putObjectArgs); + } catch (ErrorResponseException e) { + e.printStackTrace(); + } catch (InsufficientDataException e) { + e.printStackTrace(); + } catch (InternalException e) { + e.printStackTrace(); + } catch (InvalidBucketNameException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (InvalidResponseException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (ServerException e) { + e.printStackTrace(); + } catch (XmlParserException e) { + e.printStackTrace(); + } catch (RegionConflictException e) { + e.printStackTrace(); + } + return fileName; + } + + public static void main(String[] args) { + String fileName = "timg.jpeg"; + //初始化客户端 + MinioClient minioClient = MinioClient.builder() + .endpoint("http://192.168.31.19:9000") + .credentials("minioadmin","minioadmin") + .build(); + + try { + File file = new File("/Users/liangqi/Downloads/timg.jpeg"); + InputStream inputStream = new FileInputStream(file); + if (file.exists()){ + System.out.println("========文件存在======="); + } + + BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket("ssm").build(); + //判断桶是否存在 + boolean isExist = minioClient.bucketExists(bucketExistsArgs); + if (!isExist){ + minioClient.makeBucket(MakeBucketArgs.builder().bucket("ssm").build()); + } + + PutObjectArgs putObjectArgs = PutObjectArgs.builder().bucket("ssm").object(fileName).stream(inputStream,inputStream.available(),-1).build(); + minioClient.putObject(putObjectArgs); + } catch (ErrorResponseException e) { + e.printStackTrace(); + } catch (InsufficientDataException e) { + e.printStackTrace(); + } catch (InternalException e) { + e.printStackTrace(); + } catch (InvalidBucketNameException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (InvalidResponseException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (ServerException e) { + e.printStackTrace(); + } catch (XmlParserException e) { + e.printStackTrace(); + } catch (RegionConflictException e) { + e.printStackTrace(); + } + System.out.println("===============文件上传成功!!"); + } +} diff --git a/src/main/profile/dev/file.properties b/src/main/profile/dev/file.properties index 70c8c53..6b4fd68 100644 --- a/src/main/profile/dev/file.properties +++ b/src/main/profile/dev/file.properties @@ -1 +1,6 @@ -file.upload=/Users/qi/java/fileManger/ \ No newline at end of file +file.upload=/Users/liangqi/java/fileManger + +minio.server.url= +minio.bucket.name= +minio.accesskey= +minio.secretkey= \ No newline at end of file diff --git a/src/main/profile/dev/jdbc.properties b/src/main/profile/dev/jdbc.properties index 7b3df51..c0b614d 100644 --- a/src/main/profile/dev/jdbc.properties +++ b/src/main/profile/dev/jdbc.properties @@ -2,7 +2,7 @@ jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.31.111:3306/ssm?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8 jdbc.user=root -jdbc.password=mysql +jdbc.password=liangqi@mysql #--------数据库连接池配置 ------- durid.pool.initialSize=5 durid.pool.maxActive=5 diff --git a/src/main/profile/dev/redis.properties b/src/main/profile/dev/redis.properties index 59971fb..7616aac 100644 --- a/src/main/profile/dev/redis.properties +++ b/src/main/profile/dev/redis.properties @@ -1,6 +1,6 @@ -redis.host=192.168.31.110 +redis.host=192.168.31.111 redis.port=6379 -redis.pass= +redis.pass=liangqi@redis redis.timeout=-1 redis.maxTotal=15 diff --git a/src/main/resources/spring-mybatis-config.xml b/src/main/resources/spring-mybatis-config.xml index dfc6e85..aca41f3 100644 --- a/src/main/resources/spring-mybatis-config.xml +++ b/src/main/resources/spring-mybatis-config.xml @@ -14,6 +14,9 @@ + + +