From 1da190e7f267bcd3501884f3aeaac7476850fec7 Mon Sep 17 00:00:00 2001
From: EricsHu <hrr145632>
Date: 星期日, 26 十一月 2023 17:53:03 +0800
Subject: [PATCH] 优化菜单查询

---
 src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java |  102 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 97 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java
index 27f0f4e..6a33973 100644
--- a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java
+++ b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java
@@ -6,11 +6,18 @@
 import cn.hutool.core.util.StrUtil;
 
 //import cn.hutool.core.io.FileUtil;
+import com.aliyun.oss.OSSException;
 import com.obs.services.exception.ObsException;
 import com.obs.services.model.PutObjectResult;
+import com.qxueyou.scc.base.model.CacheConstants;
 import com.qxueyou.scc.base.model.FileMeta;
 import com.qxueyou.scc.base.model.Result;
+import com.qxueyou.scc.base.util.ClientUtils;
+import com.qxueyou.scc.base.util.UUIDUtils;
 import com.qxueyou.scc.teach.res.service.HweiYunOBSService;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -23,6 +30,8 @@
 import java.io.InputStream;
 import java.net.URLEncoder;
 import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 
 /**
  * @ClassName: ObsController
@@ -32,26 +41,109 @@
  * @Version: 1.0
  */
 @RestController
+@CrossOrigin
 @RequestMapping("/file")// @RequestMapping("/file")
 public class HweiYunOBSController {
+    private final Logger log = LogManager.getLogger("FileController");
 
     @Resource
     private HweiYunOBSService hweiYunOBSService;
 
     @RequestMapping(value = "upload", method = RequestMethod.POST)
-    public List<FileMeta> save(@RequestParam(value = "file", required = false) MultipartFile file) {
+    public List<FileMeta> save(@RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
 
         if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) {
             return null;
         }
-//        if (FileUtil.isEmpty(file)) {
-//            return new Result(false,"鏂囦欢涓虹┖");
-//        }
-        final List<FileMeta> test = hweiYunOBSService.fileUpload(file, file.getOriginalFilename());
+        String originalFilename = file.getOriginalFilename();
+        String substring = originalFilename.substring(originalFilename.indexOf(".")+1);
+
+        StringBuffer path=new StringBuffer();
+        //璇嗗埆鏂囦欢鍚庣紑鏍煎紡锛岃幏鍙栧搴旂殑鏂囦欢瀛樺偍璺緞
+        String pathFile = CacheConstants.fileFormatMap.get(substring.toUpperCase(Locale.ROOT));
+        if (StringUtils.isEmpty(pathFile)) {//濡傛灉涓虹┖鍒欎笂浼犲埌榛樿瀛樺偍鏂囦欢澶�
+            path.append(CacheConstants.GUANGXI_ACQUIESCE);
+        }else{
+            path.append(pathFile);
+        }
+        String uuid = UUIDUtils.UUID();
+        //灏嗘枃浠堕噸鏂板懡鍚嶏紝闃叉鍑虹幇閲嶅悕瑕嗙洊
+        String newFilename=uuid.concat(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")));
+        final List<FileMeta> test = hweiYunOBSService.fileUpload(file,path.append(newFilename).toString());
 //        return ResponseVO.ok("鎵ц鎴愬姛",test);
         return test;
     }
 
+    /**
+     * 鏂囦欢涓婁紶鎺ュ彛:涓哄鎴风鎻愪緵澶氱嚎绋嬪垎鐗囦笂浼犳帴鍙�
+     * 杩斿洖鐘舵�佸��:200浠h〃鎴愬姛锛�500浠h〃涓婁紶澶辫触锛�205浠h〃闇�閲嶆柊灏濊瘯
+     *
+     * @param identifier 鍞竴id锛岄渶瀹㈡埛绔繚璇佸敮涓�鎬э紝鐩稿悓鏂囦欢淇濊瘉鍞竴鍗冲彲锛岄潪MD5
+     * @return
+     * @TODO : 鐩墠缂哄皯瀵� 鍚勬ā鍧楁枃浠朵釜鏁般�佹枃浠舵牸寮忋�佹枃浠跺ぇ灏忕殑涓婁紶鎺у埗,缁熶竴澧炲姞鍦╟onfigFileModule琛ㄩ噷闈㈠嵆鍙疄鐜� 1 鍥剧墖锛� 2 鏂囨。 3 瑙嗛 4 闊抽
+     */
+    @RequestMapping(value = "/uploadChunk", headers = "content-type=multipart/*", method = RequestMethod.POST)
+    public @ResponseBody FileMeta doUploadPublic(MultipartFile file, HttpServletResponse response,
+                            Integer chunkNumber, Integer totalChunks, long chunkSize, long totalSize, String identifier, String filename, Integer currentChunkSize) {
+
+        FileMeta fileMeta = new FileMeta();
+        try {
+
+            Result uploadResult = null;
+
+            uploadResult = hweiYunOBSService.uploadChunk(file.getInputStream(), identifier.concat(ClientUtils.getUserId()), chunkNumber, currentChunkSize, totalChunks, filename);
+
+
+            fileMeta.setFileId(uploadResult.getDataT("fileId"));
+            fileMeta.setPath(uploadResult.getDataT("path"));
+
+            if (!uploadResult.isSuccess()) {
+                response.setStatus(205);
+            }
+
+        } catch (OSSException e) {
+            response.setStatus(500);
+            log.error(e, e);
+        } catch (Exception e) {
+            log.error("涓婁紶妯″潡瑙f瀽鍑洪敊锛�" + e.getMessage(), e);
+            response.setStatus(500);
+        }
+
+        fileMeta.setFileName(filename);
+        fileMeta.setFileSize(String.valueOf(totalSize));
+        fileMeta.setFileType(null);
+
+        return fileMeta;
+    }
+
+    /**
+     * 鍒濆鍖栧垎鐗囦笂浼犱换鍔�
+     *
+     * @return
+     */
+    @RequestMapping(value = "/uploadChunk/init", method = RequestMethod.POST)
+    public @ResponseBody
+    Result initUploadChunk(String identifier, String fileName,String md5) {
+
+        //濡傛灉MD5鐨勫搴旀枃浠跺瓨鍦ㄥ垯鐩存帴杩斿洖
+//        Result result = fileService.checkMd5(md5,fileName);
+        String substring = fileName.substring(fileName.indexOf(".")+1);
+
+        StringBuffer path=new StringBuffer();
+        //璇嗗埆鏂囦欢鍚庣紑鏍煎紡锛岃幏鍙栧搴旂殑鏂囦欢瀛樺偍璺緞
+        String pathFile = CacheConstants.fileFormatMap.get(substring.toUpperCase(Locale.ROOT));
+        if (StringUtils.isEmpty(pathFile)) {//濡傛灉涓虹┖鍒欎笂浼犲埌榛樿瀛樺偍鏂囦欢澶�
+            path.append(CacheConstants.GUANGXI_ACQUIESCE);
+        }else{
+            path.append(pathFile);
+        }
+        String uuid = UUIDUtils.UUID();
+        //灏嗘枃浠堕噸鏂板懡鍚嶏紝闃叉鍑虹幇閲嶅悕瑕嗙洊
+        String newFilename=uuid.concat(String.valueOf(fileName.lastIndexOf(".")));
+        return hweiYunOBSService.initUploadChunk(identifier.concat(ClientUtils.getUserId()),path.append(newFilename).toString(),md5);
+
+    }
+
     @RequestMapping(value = "delete", method = RequestMethod.POST)
     public Result delete(@RequestParam(value = "fileName", required = false)  String fileName) {
         if (StrUtil.isEmpty(fileName)) {

--
Gitblit v1.8.0