Browse Source

更新了 文件上传拦截,测试类屏蔽了

wuweihao 4 years ago
parent
commit
31b3cf962e

+ 65 - 13
cms_pano_fcb/gis_common/src/main/java/com/gis/common/util/FileUtils.java

@@ -2,7 +2,6 @@ package com.gis.common.util;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.img.Img;
-import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.URLUtil;
 import com.gis.common.task.AsyncTask;
@@ -258,6 +257,53 @@ public class FileUtils {
 
     }
 
+    /**
+     * 文件流上传,不存本地服务器,直接上传oss
+     * @param file
+     * @param ossBasePath
+     * @param ossDomain
+     * @return
+     */
+    public Object renameUploadOssBye(MultipartFile file, String ossBasePath, String ossDomain)  {
+
+        if (file == null) {
+            log.error("文件不能为空");
+            return null;
+        }
+
+        long size = file.getSize();
+        log.info("文件大小:" + size );
+        log.info("文件大小:" + (size/1000) + "kb");
+
+
+        String time = DateUtil.format(new Date(), "yyyyMMdd_HHmmssSSS");
+
+        String fileName = file.getOriginalFilename();
+        log.info("上传的文件名:" + fileName);
+
+        String fileType = getFileType(fileName);
+        String dirType = "image/";
+        if (fileType.equals("doc")) {
+            dirType = "doc/";
+        }
+
+        String suffix = StringUtils.substringAfterLast(fileName, ".");
+        String newName = time  + "."  +suffix;
+
+        // 上传oss
+        String ossPath = ossBasePath + dirType + newName;
+        try {
+            aliyunOssUtil.upload(file.getBytes(), ossPath);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        String ossUrl = ossDomain + ossPath;
+        log.info("ossUrl: {}", ossUrl);
+
+        return ossUrl;
+
+    }
 
 
 
@@ -467,19 +513,25 @@ public class FileUtils {
         Img.from(new File(inputFilePath)).scale(300, 150).write(new File(saveCompressImgPath));
     }
 
-//    @Test
-//    public void compressImg2(){
-//        String inputFilePath = "C:\\Users\\Administrator\\Desktop\\33\\100m\\100m.jpg";
-//        String saveCompressImgPath = "C:\\Users\\Administrator\\Desktop\\33\\100m\\thump.jpg";
-//        try {
-//            Thumbnails.of(inputFilePath).size(300, 150).toFile(saveCompressImgPath);
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//        }
-////        Img.from(new File(inputFilePath)).scale(300, 150).write(new File(saveCompressImgPath));
-//    }
-
 
+    public static boolean checkFile(MultipartFile file) {
+        //设置允许上传文件类型
+        String suffixList = ".jpg,.gif,.png,.ico,.bmp,.jpeg,.zip,.zp,.rar,.mp3,.mp4,.avi,.mov";
+        // 获取文件后缀
+        if(file == null){
+            log.info("文件流为空不可上传");
+            return false;
+        }
+        String fileName = file.getOriginalFilename();
+        String suffix = fileName.substring(fileName.lastIndexOf(".")
+                + 1, fileName.length());
+        if (suffixList.contains(suffix.trim().toLowerCase())) {
+            log.info("无非法参数可以放行!!!");
+            return true;
+        }
+        log.info("存在非法参数不能放行!请核对上传文件格式,重新刷新页面再次上传!");
+        return false;
+    }
 
     /**
      * 根据路径写入文件,适合oss

+ 10 - 3
cms_pano_fcb/gis_service/src/main/java/com/gis/service/impl/SceneServiceImpl.java

@@ -71,6 +71,11 @@ public class SceneServiceImpl extends IBaseServiceImpl<SceneEntity, String> impl
     @Override
     public Result uploadPanoRabbitMq(MultipartFile file, String houseId, String sceneType, String hengdaId) {
 
+        // 检查非法文件上传
+        boolean checkFile = FileUtils.checkFile(file);
+        if (!checkFile) {
+            return Result.failure("上传文件格式有误, 请重新上传");
+        }
 
         if (StringUtils.isBlank(hengdaId) || hengdaId.equals("null")) {
             log.error("hengdaId不能为空");
@@ -677,9 +682,11 @@ public class SceneServiceImpl extends IBaseServiceImpl<SceneEntity, String> impl
 
     @Override
     public Result upload(MultipartFile file) {
-        if (file == null) {
-            log.error("文件不能为空");
-            return Result.failure("文件不能为空");
+
+        // 检查非法文件上传
+        boolean checkFile = FileUtils.checkFile(file);
+        if (!checkFile) {
+            return Result.failure("上传文件格式有误, 请重新上传");
         }
         return Result.success(fileUtils.renameUploadOss(file, configConstant.filePath, configConstant.ossBasePath, configConstant.ossDomain));
     }

+ 9 - 3
cms_pano_fcb/gis_web/src/main/java/com/gis/web/controller/TestController.java

@@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit;
  */
 @Slf4j
 @Api(tags = "测试")
-@RestController
+//@RestController
 @RequestMapping("fcb/pano/test")
 public class TestController extends BaseController {
 
@@ -251,8 +251,14 @@ public class TestController extends BaseController {
     @PostMapping("uploadOss")
     @ApiOperation(value = "文件上传oss")
     public Result uploadOss(MultipartFile file){
-        fileUtils.renameUploadOssMap(file, configConstant.filePath, configConstant.ossBasePath, configConstant.ossDomain);
-        return Result.success(userInfo());
+        return Result.success(fileUtils.renameUploadOssMap(file, configConstant.filePath, configConstant.ossBasePath, configConstant.ossDomain));
+    }
+
+
+    @PostMapping("uploadOssBye")
+    @ApiOperation(value = "文件上传oss-字节上传")
+    public Result uploadOssBye(MultipartFile file){
+        return Result.success(fileUtils.renameUploadOssBye(file, configConstant.ossBasePath, configConstant.ossDomain));
     }
 
 

+ 2 - 1
cms_pano_fcb/remark.md

@@ -103,7 +103,8 @@ sit:
    
    web: 
    https://vr-web01-uat.fcb.com.cn/evergrande/#/login
-
+    https://vr-web01-uat.fcb.com.cn/
+    https://vr-mc01-uat.fcb.com.cn/
 # 720yun 需求
  1. 先上传全景图
  2. 在编辑场景