From 431085bb1c9dcd38af65aa3087d57f23eecaad46 Mon Sep 17 00:00:00 2001
From: whb <17803890193@163.com>
Date: Wed, 31 Jul 2024 16:54:40 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8B=E8=BD=BD=E6=89=BE?=
 =?UTF-8?q?=E4=B8=8D=E5=88=B0=E8=B7=AF=E5=BE=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/stu/JupyterController.java     |  4 +--
 .../util/file/IFileUtil.java                  |  4 +++
 .../util/file/LocalFileUtil.java              | 34 +++++++++++++++++++
 3 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/JupyterController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/JupyterController.java
index 051e086..8a5ded3 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/JupyterController.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/JupyterController.java
@@ -264,12 +264,12 @@ public class JupyterController {
     @AnonymousAccess
     @ApiOperation("python下载生成文件")
     @GetMapping("downloadFileByPython")
-    public void downloadFileByPython(@RequestParam String caseName, @RequestParam String name, HttpServletResponse response) {
+    public void downloadFileByPython(@RequestParam String name, HttpServletResponse response) {
 
         //存在就下载
         String path = "/usr/local/tianzeProject/financial_bigdata_total/py/data/";
 
-        iFileUtil.download(response, caseName, path+name);
+        iFileUtil.downloadByOtherFile(response, name, path+name);
     }
 
 
diff --git a/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java b/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java
index fac9b37..ff83ae9 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java
@@ -84,4 +84,8 @@ public interface IFileUtil {
      */
     String getDiskRelativePath(String fileName, String suffix);
 
+
+    void downloadByOtherFile(HttpServletResponse response,String name,String filePath);
+
+
 }
diff --git a/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java b/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java
index f62616c..28555c0 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java
@@ -173,4 +173,38 @@ public class LocalFileUtil implements IFileUtil{
             throw new IllegalArgumentException("上传文件失败,IO错误");
         }
     }
+
+
+    @Override
+    public void downloadByOtherFile(HttpServletResponse response, String name,String relativePath) {
+        Assert.hasText(relativePath, "路径为空");
+        System.out.println("------------------------------------" + relativePath);
+        File file = new File(relativePath);
+        Assert.isTrue(file.exists(), "附件不存在");
+        String sp = relativePath.substring(relativePath.lastIndexOf(".") + 1);
+
+        String substring = name.substring(0, name.lastIndexOf("."));
+
+
+        InputStream fis = null;
+        try {
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode((substring + "." + sp), CharsetUtil.UTF_8));
+            fis = new BufferedInputStream(Files.newInputStream(file.toPath()));
+            response.addHeader("Content-Length", String.valueOf(fis.available()));
+            byte[] buff = new byte[4096];
+            int len;
+            while ((len = fis.read(buff)) != -1) {
+                response.getOutputStream().write(buff, 0, len);
+            }
+        } catch (Exception e) {
+            throw new IllegalArgumentException("下载文件失败: " + e.getMessage());
+        } finally {
+            try {
+                if (fis != null) fis.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }