From 735ec3dd89c550bd3a33333a03eac1bf3f0e76dd Mon Sep 17 00:00:00 2001 From: anjie <489879492@qq.com> Date: Wed, 8 Jul 2020 13:46:19 +0800 Subject: [PATCH] release --- pom.xml | 7 + ruoyi-admin/pom.xml | 5 + .../src/main/resources/application.yml | 7 + ruoyi-minio/pom.xml | 26 ++++ .../java/com/ruoyi/minio/MimioController.java | 139 +++++++++++++++++ .../java/com/ruoyi/minio/MyConfigration.java | 28 ++++ .../main/resources/templates/minio/index.html | 145 ++++++++++++++++++ 7 files changed, 357 insertions(+) create mode 100644 ruoyi-minio/pom.xml create mode 100644 ruoyi-minio/src/main/java/com/ruoyi/minio/MimioController.java create mode 100644 ruoyi-minio/src/main/java/com/ruoyi/minio/MyConfigration.java create mode 100644 ruoyi-minio/src/main/resources/templates/minio/index.html diff --git a/pom.xml b/pom.xml index 7ae6bbe40..9a2184a48 100644 --- a/pom.xml +++ b/pom.xml @@ -217,6 +217,12 @@ ${ruoyi.version} + + com.ruoyi + ruoyi-minio + ${ruoyi.version} + + @@ -229,6 +235,7 @@ ruoyi-common ruoyi-file business + ruoyi-minio pom diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 6f8723421..f61ea88b1 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -88,6 +88,11 @@ com.ruoyi ruoyi-file + + + com.ruoyi + ruoyi-minio + diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 9fdfab48d..07364214b 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -133,3 +133,10 @@ xss: swagger: # 是否开启swagger enabled: true + +minio: + url: http://032t.com:9999/ + accessKey: admin + secretKey: R1@31qaz + bucketName: huaping + startfile: index.html diff --git a/ruoyi-minio/pom.xml b/ruoyi-minio/pom.xml new file mode 100644 index 000000000..987d007c0 --- /dev/null +++ b/ruoyi-minio/pom.xml @@ -0,0 +1,26 @@ + + + + ruoyi + com.ruoyi + 4.3.0 + + 4.0.0 + + ruoyi-minio + + + + com.ruoyi + ruoyi-common + + + io.minio + minio + 7.0.2 + + + + diff --git a/ruoyi-minio/src/main/java/com/ruoyi/minio/MimioController.java b/ruoyi-minio/src/main/java/com/ruoyi/minio/MimioController.java new file mode 100644 index 000000000..82a0ea2a9 --- /dev/null +++ b/ruoyi-minio/src/main/java/com/ruoyi/minio/MimioController.java @@ -0,0 +1,139 @@ +package com.ruoyi.minio; + +import com.ruoyi.common.core.domain.AjaxResult; +import io.minio.MinioClient; +import io.minio.PutObjectOptions; +import io.minio.Result; +import io.minio.errors.*; +import io.minio.messages.Bucket; +import io.minio.messages.Item; +import javafx.application.Application; +import javafx.stage.Stage; +import org.apache.commons.collections4.map.LinkedMap; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.*; +import java.util.stream.DoubleStream; + +@Controller +@RequestMapping("/minio") +public class MimioController { + + @Autowired + MinioClient minioClient; + + @Value("${minio.bucketName}") + private String bucketName; + + @Value("${minio.startfile}") + private String startfile; + + + @RequestMapping("/index") + public String index(String path,String openfile,ModelMap mmap) throws IOException, InvalidResponseException, + InvalidKeyException, NoSuchAlgorithmException, InternalException, XmlParserException, + InvalidBucketNameException, InsufficientDataException, ErrorResponseException { + + mmap.put("dirlist", getDirList(path)); + + if(openfile==null) + mmap.put("openfile",startfile); + else + mmap.put("openfile",openfile); + + return "minio/index"; + + } + + + @RequestMapping("/getdirlist") + @ResponseBody + public ArrayList> getDirList(String dir) throws IOException, InvalidResponseException, + InvalidKeyException, NoSuchAlgorithmException, ErrorResponseException, + XmlParserException, InvalidBucketNameException, InsufficientDataException, + InternalException { + + return listObjects(dir); + + } + + @RequestMapping("/save") + @ResponseBody + public Object save(String filepath,String content) throws IOException, InvalidKeyException, + InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, + InternalException, XmlParserException, InvalidBucketNameException, ErrorResponseException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8.name())); + minioClient.putObject(bucketName,filepath,byteArrayInputStream,new PutObjectOptions(byteArrayInputStream.available(), -1)); + + return AjaxResult.success("保存成功"); + } + + @RequestMapping("/getfile") + @ResponseBody + public Object getFile(String filepath) throws IOException, InvalidResponseException, + InvalidKeyException, NoSuchAlgorithmException, ErrorResponseException, + XmlParserException, InvalidBucketNameException, InsufficientDataException, + InternalException { + + InputStream inputStream = fileIo(filepath); + ByteArrayOutputStream result = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int length; + while ((length = inputStream.read(buffer)) != -1) { + result.write(buffer, 0, length); + } + String str = result.toString(StandardCharsets.UTF_8.name()); + return AjaxResult.success("success",str); + + } + + public InputStream fileIo(String objname) throws IOException, + InvalidKeyException, InvalidResponseException, + InsufficientDataException, NoSuchAlgorithmException, + InternalException, XmlParserException, InvalidBucketNameException, + ErrorResponseException { + + InputStream object = minioClient.getObject(bucketName, objname); + + return object; + } + + //获取指定文件列表 + public ArrayList> listObjects(String prefix) throws IOException, InvalidKeyException, + InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, + InternalException, XmlParserException, InvalidBucketNameException, + ErrorResponseException { + + Iterable> results = minioClient.listObjects(bucketName, prefix, false); + ArrayList> items = new ArrayList<>(); + + for(Result i:results){ + Item item = i.get(); + HashMap data = new HashMap<>(); + data.put("isDir",item.isDir()); + data.put("objname", item.objectName()); + String[] split = item.objectName().split("/"); + data.put("name",split[split.length-1]); + data.put("lastModified",!item.isDir()?item.lastModified():null); + data.put("size",item.size()); + items.add(data); + } + Collections.reverse(items); + return items; + + } + +} diff --git a/ruoyi-minio/src/main/java/com/ruoyi/minio/MyConfigration.java b/ruoyi-minio/src/main/java/com/ruoyi/minio/MyConfigration.java new file mode 100644 index 000000000..7dc79cf56 --- /dev/null +++ b/ruoyi-minio/src/main/java/com/ruoyi/minio/MyConfigration.java @@ -0,0 +1,28 @@ +package com.ruoyi.minio; + +import io.minio.MinioClient; +import io.minio.errors.InvalidEndpointException; +import io.minio.errors.InvalidPortException; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MyConfigration { + + @Value("${minio.url}") + private String url; + + @Value("${minio.accessKey}") + private String accessKey; + + @Value("${minio.secretKey}") + private String secretKey; + + @Bean + public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException { + + MinioClient minioClient = new MinioClient(url, accessKey, secretKey); + return minioClient; + } +} diff --git a/ruoyi-minio/src/main/resources/templates/minio/index.html b/ruoyi-minio/src/main/resources/templates/minio/index.html new file mode 100644 index 000000000..49672fe29 --- /dev/null +++ b/ruoyi-minio/src/main/resources/templates/minio/index.html @@ -0,0 +1,145 @@ + + + + + + + + 在线编辑 + + + + + + + +
+
+
+
+
+ VSCODE 编辑器 + +
+
+
+
+
+
+
+
+
目录
+
+ + + + + + + + + + + + + + + + + + +
类型名称大小
+ + +
+ +
+
+
+
+ +
+ + +