Przeglądaj źródła

算法文件上传

zhaoyan 3 lat temu
rodzic
commit
453768c7b9

+ 30 - 14
simulation-resource-common/src/main/java/com/css/simulation/resource/common/controller/MinioController.java

@@ -1,8 +1,10 @@
 package com.css.simulation.resource.common.controller;
 
 import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.constants.DictConstants;
 import api.common.pojo.param.MinioParameter;
 import api.common.util.FileUtil;
+import api.common.util.TimeUtil;
 import com.css.simulation.resource.common.util.MinioUtil;
 import io.minio.MinioClient;
 import io.minio.errors.*;
@@ -15,11 +17,15 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/minio")
@@ -60,21 +66,31 @@ public class MinioController {
     @PostMapping(value = "/uploadProcessBar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
     public ResponseBodyVO<String> uploadProcessBar(
             @RequestPart("file") MultipartFile file,
-            @RequestParam("objectName") String objectName,//  "/xx/xxx/x/xx"
-            @RequestParam("objectPath") String objectPath
+            HttpServletRequest request
     ) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
-
-        MinioUtil.uploadProcessBar(
-                minioClient,
-                file,
-                bucketName,
-                objectName,
-                objectPath,
-                redisController
-        );
-        String previewUrl = MinioUtil.getPreviewUrl(minioClient, Method.GET, bucketName, objectName);
-
-        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, "请求成功!", previewUrl);
+        String type = request.getParameter("type");
+        String objectPath = request.getParameter("objectPath");
+        if (file != null){
+            String objectName = "";
+            Integer nowTime = TimeUtil.getRq(new Date(), 0);
+            if (type.equals(DictConstants.ALGORITHM_FILE)) {
+                objectName = "algorithm/" + nowTime + "/" + objectPath + "/" + file.getOriginalFilename();
+            }
+
+            MinioUtil.uploadProcessBar(
+                    minioClient,
+                    file,
+                    bucketName,
+                    objectName,
+                    objectPath,
+                    redisController
+            );
+            Map map = new HashMap();
+            map.put("fileName", objectName);
+
+            return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS, map);
+        }
+        return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "文件流file为空,请检查!");
     }
 
 //    @PostMapping("/download")

+ 10 - 1
simulation-resource-common/src/main/java/com/css/simulation/resource/common/util/MinioUtil.java

@@ -143,7 +143,6 @@ public class MinioUtil {
                     public void getStep(int readBytes){
                         RedisParameter redisParameter = getProgress(readBytes,longs);
                         if(ObjectUtil.isNotNull(redisParameter)){
-                            //System.out.println("progress----:" + redisParameter.getValue());
                             redisParameter.setKey(DictConstants.ALGORITHM_KEY + objectPath);//进度缓存的 key
                             redisController.set(redisParameter);
                         }
@@ -155,6 +154,13 @@ public class MinioUtil {
                 .stream(pis, fileSize, -1)
                 .build());
         pis.close();
+
+        // 执行到此表示上传完成了,强者更新redis的值 1
+        RedisParameter redisParameter=new RedisParameter();
+        redisParameter.setKey(DictConstants.ALGORITHM_KEY + objectPath);
+        redisParameter.setValue("1");
+        redisParameter.setMinutes(1);
+        redisController.set(redisParameter);
     }
 
     /**
@@ -197,6 +203,9 @@ public class MinioUtil {
             RedisParameter redisParameter = new RedisParameter();
             redisParameter.setValue(String.format("%.2f",progress-progressStep));
             redisParameter.setMinutes(1);
+            if(longs[0] == longs[2]){
+                redisParameter.setValue("1.00");
+            }
             return redisParameter;
         }
         return null;

+ 6 - 8
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/FileController.java

@@ -4,6 +4,7 @@ import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.param.MinioParameter;
 import api.common.pojo.param.RedisParameter;
+import api.common.util.ObjectUtil;
 import api.common.util.TimeUtil;
 import com.css.simulation.resource.feign.FileDownService;
 import com.css.simulation.resource.feign.RedisService;
@@ -52,17 +53,10 @@ public class FileController {
                 fileName = "交通事故场景/" + nowTime + "/" + objectPath + "/" + multipartFile.getOriginalFilename();
             } else if (type.equals(DictConstants.SCENE_GENERAL)) {
                 fileName = "泛化场景/" + nowTime + "/" + objectPath + "/" + multipartFile.getOriginalFilename();
-            } else if (type.equals(DictConstants.ALGORITHM_FILE)) {
-                fileName = "algorithm/" + nowTime + "/"  + objectPath + "/" + multipartFile.getOriginalFilename();
             } else {
                 fileName = multipartFile.getOriginalFilename();
             }
             ResponseBodyVO<String> respon;
-//            if (type.equals(DictConstants.ALGORITHM_FILE)) {
-//                respon = fileDownService.uploadProcessBar(multipartFile, fileName, objectPath);
-//            }else {
-//                respon = fileDownService.upload(multipartFile, fileName);
-//            }
             respon = fileDownService.upload(multipartFile, fileName);
             String videoPreview = respon.getMessage();
             Map map = new HashMap();
@@ -85,10 +79,14 @@ public class FileController {
     }
 
     @PostMapping(value = "/getProgress")
-    public ResponseBodyVO getProgress(@RequestParam("objectPath") String objectPath){
+    public ResponseBodyVO getProgress(@RequestBody Map<String,String> paramMap){
+        String objectPath = paramMap.get("objectPath");
         RedisParameter redisParameter = new RedisParameter();
         redisParameter.setKey(DictConstants.ALGORITHM_KEY + objectPath);
         ResponseBodyVO resp = redisService.getProgress(redisParameter);
+        if(ObjectUtil.isNull(resp.getInfo())){
+            resp.setInfo("0.00");
+        }
         return resp;
     }