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(); + } + } + } }