Ver Fonte

增加分布式文件Minio支持

RuoYi há 4 anos atrás
pai
commit
e100b0b940

+ 1 - 0
pom.xml

@@ -33,6 +33,7 @@
         <commons.fileupload.version>1.3.3</commons.fileupload.version>
         <velocity.version>1.7</velocity.version>
         <fastjson.version>1.2.74</fastjson.version>
+        <minio.version>8.0.3</minio.version>
 		<poi.version>4.1.2</poi.version>
         <common-pool.version>2.6.2</common-pool.version>
     </properties>

+ 7 - 0
ruoyi-modules/ruoyi-file/pom.xml

@@ -54,6 +54,13 @@
             <artifactId>fastdfs-client</artifactId>
         </dependency>
         
+        <!-- Minio -->
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>${minio.version}</version>
+        </dependency>
+        
         <!-- RuoYi Api System -->
         <dependency>
             <groupId>com.ruoyi</groupId>

+ 82 - 0
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java

@@ -0,0 +1,82 @@
+package com.ruoyi.file.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import io.minio.MinioClient;
+
+/**
+ * Minio 配置信息
+ *
+ * @author ruoiy
+ */
+@Configuration
+@ConfigurationProperties(prefix = "minio")
+public class MinioConfig
+{
+    /**
+     * 服务地址
+     */
+    private String url;
+
+    /**
+     * 用户名
+     */
+    private String accessKey;
+
+    /**
+     * 密码
+     */
+    private String secretKey;
+
+    /**
+     * 存储桶名称
+     */
+    private String bucketName;
+
+    public String getUrl()
+    {
+        return url;
+    }
+
+    public void setUrl(String url)
+    {
+        this.url = url;
+    }
+
+    public String getAccessKey()
+    {
+        return accessKey;
+    }
+
+    public void setAccessKey(String accessKey)
+    {
+        this.accessKey = accessKey;
+    }
+
+    public String getSecretKey()
+    {
+        return secretKey;
+    }
+
+    public void setSecretKey(String secretKey)
+    {
+        this.secretKey = secretKey;
+    }
+
+    public String getBucketName()
+    {
+        return bucketName;
+    }
+
+    public void setBucketName(String bucketName)
+    {
+        this.bucketName = bucketName;
+    }
+
+    @Bean
+    public MinioClient getMinioClient()
+    {
+        return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
+    }
+}

+ 1 - 1
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java

@@ -9,7 +9,7 @@ import com.github.tobato.fastdfs.domain.fdfs.StorePath;
 import com.github.tobato.fastdfs.service.FastFileStorageClient;
 
 /**
- * FastDFS文件存储
+ * FastDFS 文件存储
  * 
  * @author ruoyi
  */

+ 0 - 1
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java

@@ -37,7 +37,6 @@ public class LocalSysFileServiceImpl implements ISysFileService
      * 本地文件上传接口
      * 
      * @param file 上传的文件
-     * @param baseDir 相对应用的基目录
      * @return 访问地址
      * @throws Exception
      */

+ 44 - 0
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java

@@ -0,0 +1,44 @@
+package com.ruoyi.file.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import com.ruoyi.file.config.MinioConfig;
+import com.ruoyi.file.utils.FileUploadUtils;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+
+/**
+ * Minio 文件存储
+ * 
+ * @author ruoyi
+ */
+@Service
+public class MinioSysFileServiceImpl implements ISysFileService
+{
+    @Autowired
+    private MinioConfig minioConfig;
+
+    @Autowired
+    private MinioClient client;
+
+    /**
+     * 本地文件上传接口
+     * 
+     * @param file 上传的文件
+     * @return 访问地址
+     * @throws Exception
+     */
+    public String uploadFile(MultipartFile file) throws Exception
+    {
+        String fileName = FileUploadUtils.extractFilename(file);
+        PutObjectArgs args = PutObjectArgs.builder()
+                .bucket(minioConfig.getBucketName())
+                .object(fileName)
+                .stream(file.getInputStream(), file.getSize(), -1)
+                .contentType(file.getContentType())
+                .build();
+        client.putObject(args);
+        return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
+    }
+}

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
sql/ry_config_20201222.sql


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff