Browse Source

oss上传file增加格式校验

lengfaqiang 2 years ago
parent
commit
a157133880

+ 2 - 3
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/vo/FileInfoVO.java

@@ -2,6 +2,7 @@ package com.sckw.core.model.vo;
 
 import lombok.Data;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 
 /**
@@ -10,9 +11,7 @@ import java.math.BigDecimal;
  * @date 2023-07-04 09:07:08
  */
 @Data
-public class FileInfoVO {
-
-
+public class FileInfoVO implements Serializable {
     /**
      * 文件上传类型 oss/qiniuyun
      */

+ 49 - 40
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/FileUtils.java

@@ -54,7 +54,7 @@ public class FileUtils {
     private static String accessKeyId;
     private static String accessKeySecret;
     private static String bucketName;
-
+    private static FileUtils fileUtils;
 
     @Value("${aliyun.oss.endpoint}")
     private String oss_endpoint;
@@ -68,36 +68,60 @@ public class FileUtils {
     @Value("${aliyun.oss.bucket}")
     public String oss_bucketName;
 
-    public static FileInfo getFileDataList(MultipartFile file) {
-        FileInfo fileInfo =new FileInfo();
-        String oFileName = file.getOriginalFilename();
-        BigDecimal fileSize = FileUtils.getFileSize(file, StringConstant.KB);
-        fileInfo.setFileSize(fileSize);
-        fileInfo.setFileOriginalName(oFileName);
-        fileInfo.setFileSuffix(FilenameUtils.getExtension(oFileName));
-        return fileInfo;
+    private static void defalutOSS() {
+        if (StringUtils.isBlank(endpoint)) {
+            endpoint = DEFAULT_ENDPOINT;
+        }
+        if (StringUtils.isBlank(accessKeyId)) {
+            accessKeyId = DEFAULT_ACCESS_KEY_ID;
+        }
+        if (StringUtils.isBlank(accessKeySecret)) {
+            accessKeySecret = DEFAULT_ACCESS_KEY_SECRET;
+        }
+        if (StringUtils.isBlank(bucketName)) {
+            bucketName = DEFAULT_BUCKET_NAME;
+        }
     }
 
     @PostConstruct
-    public void setEndpoint() {
+    public void init() {
         endpoint = this.oss_endpoint;
-    }
-
-    @PostConstruct
-    public void setAccessKeyId() {
         accessKeyId = this.oss_accessKeyId;
-    }
-
-    @PostConstruct
-    public void setAccessKeySecret() {
         accessKeySecret = this.oss_accessKeySecret;
+        bucketName = this.oss_bucketName;
     }
 
-    @PostConstruct
-    public void setBucketName() {
-        bucketName = this.oss_bucketName;
+//    @PostConstruct
+//    public void setEndpoint() {
+//        endpoint = this.oss_endpoint;
+//    }
+//
+//    @PostConstruct
+//    public void setAccessKeyId() {
+//        accessKeyId = this.oss_accessKeyId;
+//    }
+//
+//    @PostConstruct
+//    public void setAccessKeySecret() {
+//        accessKeySecret = this.oss_accessKeySecret;
+//    }
+//
+//    @PostConstruct
+//    public void setBucketName() {
+//        bucketName = this.oss_bucketName;
+//    }
+
+    public static FileInfo getFileDataList(MultipartFile file) {
+        FileInfo fileInfo = new FileInfo();
+        String oFileName = file.getOriginalFilename();
+        BigDecimal fileSize = FileUtils.getFileSize(file, StringConstant.KB);
+        fileInfo.setFileSize(fileSize);
+        fileInfo.setFileOriginalName(oFileName);
+        fileInfo.setFileSuffix(FilenameUtils.getExtension(oFileName));
+        return fileInfo;
     }
 
+
     /**
      * 获取oss 地址前缀
      *
@@ -381,21 +405,6 @@ public class FileUtils {
         return fileInfo;
     }
 
-    private static void defalutOSS() {
-        if (StringUtils.isBlank(endpoint)) {
-            endpoint = DEFAULT_ENDPOINT;
-        }
-        if (StringUtils.isBlank(accessKeyId)) {
-            accessKeyId = DEFAULT_ACCESS_KEY_ID;
-        }
-        if (StringUtils.isBlank(accessKeySecret)) {
-            accessKeySecret = DEFAULT_ACCESS_KEY_SECRET;
-        }
-        if (StringUtils.isBlank(bucketName)) {
-            bucketName = DEFAULT_BUCKET_NAME;
-        }
-    }
-
 
     /**
      * 获取文件上传大小
@@ -422,14 +431,14 @@ public class FileUtils {
     /**
      * 获取文件上传大小
      *
-     * @param file  当前默认使用 kb
+     * @param file 当前默认使用 kb
      * @return
      */
     public static BigDecimal getFileSize(MultipartFile file, String type) {
         long size = file.getSize();
         BigDecimal bigDecimal = new BigDecimal(NumberConstant.ZERO);
-        if (StringUtils.isBlank(type)){
-            type=StringConstant.KB;
+        if (StringUtils.isBlank(type)) {
+            type = StringConstant.KB;
         }
         switch (type) {
             case "B":
@@ -447,7 +456,7 @@ public class FileUtils {
             default:
                 throw new RuntimeException("file size error");
         }
-        bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
+        bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);
         return bigDecimal;
     }
 

+ 2 - 1
sckw-common/sckw-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -5,4 +5,5 @@ com.sckw.core.filter.LoginFilter
 com.sckw.core.config.MybatisPlusConfig
 com.sckw.core.config.JacksonConfig
 com.sckw.core.filter.ExceptionFilterConfig
-com.sckw.core.aspect.LogAspect
+com.sckw.core.aspect.LogAspect
+com.sckw.core.utils.FileUtils

+ 23 - 0
sckw-modules/sckw-file/src/main/java/com/sckw/file/config/FileListConfig.java

@@ -0,0 +1,23 @@
+package com.sckw.file.config;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author lfdc
+ * @description 文件上传获取配置yml信息
+ * @date 2023-08-10 09:08:41
+ */
+@Getter
+@Setter
+@Component
+@ConfigurationProperties(prefix = "file.list")
+public class FileListConfig {
+    List<String> oss;
+    List<String> aliyun;
+    List<String> qiniu;
+}

+ 1 - 1
sckw-modules/sckw-file/src/main/java/com/sckw/file/controller/FileApiController.java

@@ -113,7 +113,7 @@ public class FileApiController {
     }
 
     /**
-     * 前端调用接口获取oss信息
+     * 前端调用接口获取oss信息-使用中
      * @param file
      * @return
      */

+ 28 - 2
sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java

@@ -6,6 +6,7 @@ import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.FileEnum;
 import com.sckw.core.model.file.FileInfo;
+import com.sckw.core.model.vo.FileInfoVO;
 import com.sckw.core.utils.FileUtils;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;
@@ -13,12 +14,14 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.file.api.dto.FileInfoDTO;
+import com.sckw.file.config.FileListConfig;
 import com.sckw.file.dao.KwsFileInfoDao;
 import com.sckw.file.model.kwfFileInfo;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -53,6 +56,9 @@ public class FileService {
     @Autowired
     KwsFileInfoDao fileInfoDao;
 
+    @Autowired
+    private FileListConfig fileListConfig;
+
     /**
      * 上传文件至OSS
      *
@@ -140,7 +146,7 @@ public class FileService {
                     map.put("message", HttpStatus.SUCCESS_MESSAGE);
                 }
                 //上传至oss文件地址
-                map.put("oosUrl",oosUrl);
+                map.put("oosUrl", oosUrl);
                 resultList.add(map);
             }
         } else {
@@ -242,10 +248,30 @@ public class FileService {
     }
 
     public HttpResult uploadFileInfo(MultipartFile file) {
+        boolean flag = checkFileFormat(file);
+        if (!flag){
+            throw new RuntimeException("上传文件格式错误!");
+        }
         FileInfo fileInfo = FileUtils.getFileDataList(file);
         fileInfo.setType(FileEnum.FILE_STORE_TYPE_OSS.getFileType());
         FileInfo returnFileInfo = FileUtils.uploadFileInfo(file, fileInfo, FileEnum.FILE_STORE_TYPE_OSS);
-        return HttpResult.ok(returnFileInfo);
+        FileInfoVO fileInfoVO = new FileInfoVO();
+        BeanUtils.copyProperties(returnFileInfo,fileInfoVO);
+        return HttpResult.ok(fileInfoVO);
+    }
+
+    /**
+     * 上传文件->oss文件格式校验
+     * @param file
+     * @return
+     */
+    private boolean checkFileFormat(MultipartFile file) {
+        List<String> ossList = fileListConfig.getOss();
+        String fileSuffix = FilenameUtils.getExtension(file.getOriginalFilename());
+        if (!ossList.contains(fileSuffix)) {
+            return false;
+        }
+        return true;
     }
 
 

+ 3 - 3
sckw-modules/sckw-file/src/main/resources/bootstrap.yml

@@ -1,12 +1,12 @@
 server:
-  port: 10050
+  port: 10051
 
 spring:
   application:
     name: sckw-file
   profiles:
-#    active: ${DEPLOY_MODE:dev}
-    active: @profiles.active@
+    active: ${DEPLOY_MODE:dev}
+#    active: @profiles.active@
   main:
     allow-bean-definition-overriding: true
     allow-circular-references: true

+ 24 - 0
sckw-modules/sckw-report/src/main/resources/bootstrap-lfdc.yml

@@ -0,0 +1,24 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 10.10.10.230:8848
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 10.10.10.230:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw_lfdc
+        # 共享配置
+        group: sckw-service-platform
+        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        extension-configs:
+          - dataId: sckw-common.yml
+            group: sckw-service-platform
+            refresh: true

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CarWaybillVO.java

@@ -30,6 +30,12 @@ public class CarWaybillVO {
      * 状态
      */
     private String status;
+
+    /**
+     * 状态Label
+     */
+    private String statusLabel;
+
     /**
      * 运单类型
      */

+ 4 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -330,7 +330,8 @@ public class ConsignOrderService {
                     carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
                     carWaybillVo.setWOrderNo(order.getLOrderNo());
                     carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
-                    carWaybillVo.setStatus(CarWaybillEnum.getName(kwtWaybillOrder.getStatus()));
+                    carWaybillVo.setStatus(String.valueOf(kwtWaybillOrder.getStatus()));
+                    carWaybillVo.setStatusLabel(CarWaybillEnum.getName(kwtWaybillOrder.getStatus()));
                     carWaybillVo.setWaybillType(kwtWaybillOrder.getType());
                     carWaybillVo.setDriverName(kwtWaybillOrder.getDriverName());
                     //todo 取mongo
@@ -425,7 +426,8 @@ public class ConsignOrderService {
                     carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
                     carWaybillVo.setWOrderNo(order.getLOrderNo());
                     carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
-                    carWaybillVo.setStatus(CarWaybillEnum.getName(kwtWaybillOrder.getStatus()));
+                    carWaybillVo.setStatus(String.valueOf(kwtWaybillOrder.getStatus()));
+                    carWaybillVo.setStatusLabel(CarWaybillEnum.getName(kwtWaybillOrder.getStatus()));
                     carWaybillVo.setWaybillType(kwtWaybillOrder.getType());
                     carWaybillVo.setDriverName(kwtWaybillOrder.getDriverName());
                     //todo 取mongo