From 5fb3667e87ba78d86014c8a3c9c6b5497b762269 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Mon, 30 Jan 2023 16:46:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E4=BB=B6=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DownLoadFileController.java | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java index 8b5a8459..bc1fbc6c 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java @@ -25,25 +25,29 @@ public class DownLoadFileController { @RequestMapping("/download") public void download(HttpServletRequest request,HttpServletResponse response) { try { - ClassPathResource classPathResource = new ClassPathResource("static/upload/PrintServer.zip"); - File file = classPathResource.getFile(); - InputStream inputStream = classPathResource.getInputStream(); - //输出文件 - InputStream fis = new BufferedInputStream(inputStream); - byte[] buffer = new byte[fis.available()]; - fis.read(buffer); - fis.close(); - response.reset(); - //获取文件的名字再浏览器下载页面 - String name = file.getName(); - response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "iso-8859-1")); - response.addHeader("Content-Length", "" + file.length()); - OutputStream out = new BufferedOutputStream(response.getOutputStream()); - response.setContentType("application/octet-stream"); - out.write(buffer); - out.flush(); - out.close(); + String path = "static/upload/PrintServer.zip"; + + String fileName = "PrintServer.zip"; + response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); + response.setContentType("content-type:octet-stream"); + /* .getClassLoader() 方法是在静态文件路径添加一个/ */ + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(path); + OutputStream outputStream = response.getOutputStream(); + try { + byte[] buffer = new byte[1024]; + int len; + assert inputStream != null; + while ((len = inputStream.read(buffer)) != -1) { /* 将流中内容写出去 .*/ + outputStream.write(buffer, 0, len); + } + }catch (IOException e){ + e.printStackTrace(); + }finally { + assert inputStream != null; + inputStream.close(); + outputStream.close(); + } } catch (Exception e) { e.printStackTrace(); }