deason 6 lat temu
rodzic
commit
a225f2ff3b

+ 2 - 0
examcloud-core-print-common/src/main/java/cn/com/qmth/examcloud/core/print/common/Constants.java

@@ -46,6 +46,8 @@ public interface Constants {
     String PAPER_DIR = "paper";
     String ANSWER_DIR = "answer";
 
+    String SUFFIX_ZIP = ".zip";
+
     static String rootFileDir() {
         return Constants.class.getClassLoader().getResource("").getPath() + "/files";
     }

+ 5 - 22
examcloud-core-print-common/src/main/java/cn/com/qmth/examcloud/core/print/common/utils/FileUtils.java

@@ -101,20 +101,14 @@ public class FileUtils {
             return false;
         }
 
-        ZipOutputStream zipStream = null;
-        OutputStream outStream = null;
-        try {
-            if (!zipFile.exists()) {
-                zipFile.createNewFile();
-            }
-
-            outStream = new FileOutputStream(zipFile);
-            zipStream = new ZipOutputStream(outStream, Charset.forName("UTF-8"));
-
+        // try-with-resources (since jdk1.7)
+        try (OutputStream outStream = new FileOutputStream(zipFile);
+             ZipOutputStream zipStream = new ZipOutputStream(outStream, Charset.forName("UTF-8"));) {
+            //是否为文件夹
             if (target.isDirectory()) {
                 File[] files = target.listFiles();
                 if (files.length == 0) {
-                    log.error("文件夹内未找到任何文件!");
+                    log.error("当前目录内未找到任何文件!");
                     return false;
                 }
 
@@ -128,17 +122,6 @@ public class FileUtils {
         } catch (IOException e) {
             log.error(e.getMessage(), e);
             return false;
-        } finally {
-            try {
-                if (zipStream != null) {
-                    zipStream.close();
-                }
-                if (outStream != null) {
-                    outStream.close();
-                }
-            } catch (IOException e) {
-                //ignore
-            }
         }
     }
 

+ 10 - 16
examcloud-core-print-provider/src/main/java/cn/com/qmth/examcloud/core/print/api/controller/CommonController.java

@@ -10,7 +10,6 @@ package cn.com.qmth.examcloud.core.print.api.controller;
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.core.print.common.Result;
 import cn.com.qmth.examcloud.core.print.common.upyun.UpYunClient;
-import cn.com.qmth.examcloud.core.print.common.upyun.UpYunProperty;
 import cn.com.qmth.examcloud.core.print.common.utils.Check;
 import cn.com.qmth.examcloud.core.print.common.utils.FileUtils;
 import io.swagger.annotations.Api;
@@ -39,18 +38,6 @@ public class CommonController extends ControllerSupport {
     @Autowired
     private UpYunClient upYunClient;
 
-    @GetMapping("/download")
-    @ApiOperation(value = "下载文件")
-    public void download(@RequestParam String filePath) throws Exception {
-        File file = upYunClient.download(filePath);
-        final String fileName = FileUtils.getFileName(filePath);
-        if (file != null) {
-            super.exportFile(fileName, file);
-        } else {
-            super.exportFile("404", new byte[0]);
-        }
-    }
-
     @PostMapping("/upload")
     @ApiOperation(value = "上传文件")
     public Result upload(HttpServletRequest request) throws Exception {
@@ -66,9 +53,16 @@ public class CommonController extends ControllerSupport {
         return upYunClient.upload(file.getBytes(), file.getOriginalFilename());
     }
 
-    @PostMapping("/upyun/info")
-    public UpYunProperty getUpYunInfo() {
-        return upYunClient.getProperty();
+    @GetMapping("/download")
+    @ApiOperation(value = "下载文件")
+    public void download(@RequestParam String filePath) throws Exception {
+        File file = upYunClient.download(filePath);
+        if (file != null) {
+            super.exportFile(FileUtils.getFileName(filePath), file);
+        } else {
+            //文件不存在
+            super.exportFile("404", new byte[0]);
+        }
     }
 
 }

+ 11 - 6
examcloud-core-print-provider/src/main/java/cn/com/qmth/examcloud/core/print/api/controller/CoursePaperController.java

@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
 import java.io.File;
 import java.util.List;
 
+import static cn.com.qmth.examcloud.core.print.common.Constants.STRUCT_ZIP_NAME;
 import static cn.com.qmth.examcloud.core.print.common.Result.success;
 
 /**
@@ -71,18 +72,22 @@ public class CoursePaperController extends ControllerSupport {
     @ApiOperation(value = "批量导出")
     public void exportBatch(@RequestBody ExportBatchReq req) throws Exception {
         File file = coursePaperService.exportBatchCoursePaper(req);
-        final String fileName = "papers.zip";
-        //super.exportFile(fileName, file);//todo
-        super.exportFile(fileName, new byte[]{});
+        if (file != null) {
+            super.exportFile(STRUCT_ZIP_NAME, file);
+        } else {
+            super.exportFile(STRUCT_ZIP_NAME, new byte[]{});
+        }
     }
 
     @GetMapping("/export/all")
     @ApiOperation(value = "整体导出")
     public void exportAll(@RequestBody ExportAllReq req) throws Exception {
         File file = coursePaperService.exportAllCoursePaper(req);
-        final String fileName = "structures.zip";
-        //super.exportFile(fileName, file);//todo
-        super.exportFile(fileName, new byte[]{});
+        if (file != null) {
+            super.exportFile(STRUCT_ZIP_NAME, file);
+        } else {
+            super.exportFile(STRUCT_ZIP_NAME, new byte[]{});
+        }
     }
 
 }

+ 4 - 1
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/impl/CoursePaperServiceImpl.java

@@ -324,10 +324,13 @@ public class CoursePaperServiceImpl implements CoursePaperService {
 
         //压缩打包所有文件
         File target = new File(targetDir);
-        File zipFile = new File(targetDir + ".zip");
+        File zipFile = new File(targetDir + SUFFIX_ZIP);
         FileUtils.zip(target, zipFile);
 
         try {
+            if (!zipFile.exists()) {
+                zipFile.createNewFile();
+            }
             //压缩完后移除临时文件
             org.apache.commons.io.FileUtils.deleteDirectory(target);
         } catch (IOException e) {

+ 0 - 1
examcloud-core-print-starter/src/main/resources/security-exclusions.conf

@@ -8,7 +8,6 @@
 
 [${$rmp.ctrl.print}/common][/upload][POST]
 [${$rmp.ctrl.print}/common][/download][GET]
-[${$rmp.ctrl.print}/common][/upyun/info][POST]
 
 [${$rmp.ctrl.print}/printing/project][/list][POST]
 [${$rmp.ctrl.print}/printing/project][/{id}][POST]