lyhzzz пре 2 месеци
родитељ
комит
c673c8bd7e

+ 3 - 2
src/main/java/com/fdkankan/fusion/common/ResultCode.java

@@ -84,9 +84,10 @@ public enum ResultCode {
 
     UPLOAD_FILE_ERROR(8032, "上传失败,请检查文件格式。" ),
     FILE_TYPE_ERROR23(8033, "文件名不得含有中文"),
-    UNZIP_ERROR(8034, "解压失败");
-
+    UNZIP_ERROR(8034, "解压失败"),
 
+    SPACE_ERROR(8035, "获取磁盘空间失败"),
+    USE_SPACE_ERROR(8036, "磁盘空间不足");
 
 
 

+ 23 - 2
src/main/java/com/fdkankan/fusion/common/util/FileWriterUtil.java

@@ -1,9 +1,13 @@
 package com.fdkankan.fusion.common.util;
 
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.config.CacheUtil;
+import com.fdkankan.fusion.exception.BusinessException;
+import org.springframework.web.multipart.MultipartFile;
+
 import java.io.*;
 import java.math.BigDecimal;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
+import java.nio.file.*;
 import java.util.List;
 import java.util.Objects;
 import java.util.regex.Matcher;
@@ -104,4 +108,21 @@ public class FileWriterUtil {
         Matcher m = p.matcher(str);
         return m.find();
     }
+
+
+    public static void checkSpace(Long fileSize, Double i) {
+        Path path = Paths.get(CacheUtil.basePath);
+        try {
+            FileStore store = Files.getFileStore(path);
+            long canUseSpace = store.getTotalSpace() - store.getUsableSpace();
+            BigDecimal multiply = new BigDecimal(fileSize).multiply(new BigDecimal(i));
+
+            if(multiply.compareTo(new BigDecimal(canUseSpace))  >= 1){
+                throw new BusinessException(ResultCode.USE_SPACE_ERROR);
+            }
+
+        }catch (Exception e){
+            throw new BusinessException(ResultCode.SPACE_ERROR);
+        }
+    }
 }

+ 2 - 0
src/main/java/com/fdkankan/fusion/service/impl/CommonUploadServiceImpl.java

@@ -76,10 +76,12 @@ public class CommonUploadServiceImpl extends ServiceImpl<ICommonUploadMapper, Co
             }
             file.transferTo(tempFile);
             if(extName.equals(".zip")){
+                FileWriterUtil.checkSpace(file.getSize(),3.0);
                 return uploadModelZip(name.replace(extName, ""),tempFile,dictId);
             }
             //localToOssUtil.uploadOss(tempFile.getPath(), ossPath);
             //String url = this.ossUrlPrefix + ossPath;
+            FileWriterUtil.checkSpace(file.getSize(),1.1);
             String url = CacheUtil.mapping + ossPath;
 
             FileTypeEnum fileTypeEnum = FileTypeEnum.getByType(extName.replace(".", ""));

+ 5 - 0
src/main/java/com/fdkankan/fusion/service/impl/SceneCommonService.java

@@ -29,6 +29,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.io.IOException;
+import java.nio.file.FileStore;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 7 - 3
src/main/java/com/fdkankan/fusion/service/impl/UploadService.java

@@ -3,10 +3,8 @@ package com.fdkankan.fusion.service.impl;
 import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.OssPath;
 import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.util.*;
 import com.fdkankan.fusion.common.util.LocalToOssUtil;
-import com.fdkankan.fusion.common.util.ShellUtil;
-import com.fdkankan.fusion.common.util.LocalToOssUtil;
-import com.fdkankan.fusion.common.util.VideoUtil;
 import com.fdkankan.fusion.config.CacheUtil;
 import com.fdkankan.fusion.exception.BusinessException;
 import lombok.extern.slf4j.Slf4j;
@@ -21,6 +19,10 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.net.URLEncoder;
+import java.nio.file.FileStore;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.LinkedHashSet;
 import java.util.UUID;
 import java.util.regex.Matcher;
@@ -45,6 +47,7 @@ public class UploadService {
             System.out.println(file.getSize());
             throw new BusinessException(ResultCode.UPLOAD_FILE_TO_LONG);
         }
+        FileWriterUtil.checkSpace(file.getSize(),1.1);
         //获取文件名
         String fileName = file.getOriginalFilename();
         if(StringUtils.isEmpty(fileName)){
@@ -76,6 +79,7 @@ public class UploadService {
             System.out.println(file.getSize());
             throw new BusinessException(ResultCode.UPLOAD_FILE_TO_LONG);
         }
+        FileWriterUtil.checkSpace(file.getSize(),1.1);
         //获取文件名
         String fileName = file.getOriginalFilename();
         if(StringUtils.isEmpty(fileName)){