Browse Source

3.2.7 bug修改

xiaofei 1 năm trước cách đây
mục cha
commit
9b493dabec

+ 5 - 8
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -47,6 +47,8 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -851,14 +853,9 @@ public class SysController {
         }
 
         ImportTemplateEnum importTemplateEnum = ImportTemplateEnum.valueOf(type);
-        //注意getResource("")里面是空字符串
-        String path = this.getClass().getClassLoader().getResource("").getPath();
-        File file = new File(path + File.separator + "temps", importTemplateEnum.getTemplateName());
-        log.info("模板下载路径:{}", file.getPath());
-        if (!file.exists()) {
-            throw ExceptionResultEnum.ERROR.exception("模板文件下载失败");
-        }
+
+        InputStream inputStream = this.getClass().getResourceAsStream(File.separator + "temps" + File.separator + importTemplateEnum.getTemplateName());
         // 导出
-        FileUtil.outputFile(response, file, importTemplateEnum.getFileName());
+        FileUtil.outputFile(response, inputStream, importTemplateEnum.getFileName());
     }
 }

+ 16 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileUtil.java

@@ -584,4 +584,20 @@ public class FileUtil {
             log.error(SystemConstant.LOG_ERROR, e);
         }
     }
+
+    public static void outputFile(HttpServletResponse response, InputStream inputStream, String fileName) {
+        try {
+            BufferedInputStream br = new BufferedInputStream(inputStream);
+            String fName = URLEncoder.encode(fileName, SystemConstant.CHARSET_NAME);
+
+            response.reset();
+            response.setContentType("application/x-msdownload");
+            response.setHeader("Content-Disposition", "attachment; filename=" + fName);
+            IOUtils.copy(br, response.getOutputStream());
+            br.close();
+//            outStream.close();
+        } catch (IOException e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+        }
+    }
 }