From 906623936ef99a66698780cdd2679a1b3cd31a9e Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 26 Apr 2023 17:31:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=AC=E5=9C=B0=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加本地文件下载功能 --- .../controller/ReportManageConroller.java | 2 +- .../com/adc/da/report/util/LocalFileUtil.java | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index 2dbb23b..43e756a 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -361,7 +361,7 @@ public class ReportManageConroller { }else if ("alioss".equals(uploadType)){ ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); }else if ("local".equals(uploadType)){ - //do nothing + localFileUtil.downFile(entity.getSavePath(), response); } } catch (Exception ex) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java index b931796..6204671 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java @@ -1,10 +1,15 @@ package com.adc.da.report.util; +import com.adc.da.util.exception.AdcDaBaseException; +import com.obs.services.exception.ObsException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; /** * @author Caihaohan @@ -56,4 +61,26 @@ public class LocalFileUtil { inputStream.close(); outputStream.close(); } + + public void downFile(String savePath, HttpServletResponse response) throws IOException { + String filePath = uploadFile + savePath; + + //复制到本地 + FileOutputStream fileOutputStream = new FileOutputStream(filePath); + getFileFromLocal(savePath, fileOutputStream); + + //将文件写到response中 + try (InputStream objectContent = Files.newInputStream(Paths.get(filePath))) { + byte[] bt = new byte[1024 * 1024]; + int len = 0; + while ((len = objectContent.read(bt)) != -1) { + response.getOutputStream().write(bt, 0, len); + } + } catch (ObsException | IOException oe) { + throw new AdcDaBaseException("获取本地文件失败"); + } finally { + // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。 + response.getOutputStream().close(); + } + } } \ No newline at end of file