From b75de807123a59810a450cba923d42e19223556e Mon Sep 17 00:00:00 2001 From: LSH Date: 星期一, 31 七月 2023 16:49:02 +0800 Subject: [PATCH] #售前规划申请单下载中道崩殂 --- src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java | 151 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 145 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java b/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java index e599ad4..46987e2 100644 --- a/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java +++ b/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java @@ -1,14 +1,23 @@ package com.zy.crm.common.utils; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; +import org.springframework.core.io.Resource; + +import java.net.URLEncoder; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; - -import lombok.Data; +import javax.servlet.http.HttpServletResponse; +import org.springframework.core.io.UrlResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import lombok.Data; public class FileSaveExampleUtil { @@ -81,6 +90,128 @@ } } +// public static FileDTO downloadFile(String directoryPath,HttpServletResponse response) { +// File file = new File(directoryPath); +// if (file.exists()) { +// try { +// response.setContentType("application/vnd.ms-excel"); +// response.setHeader("Content-Disposition", "attachment; filename=" + file.getName()); +// +// FileInputStream fileInputStream = new FileInputStream(file); +// OutputStream outputStream = response.getOutputStream(); +// byte[] buffer = new byte[1024]; +// int length; +// while ((length = fileInputStream.read(buffer)) != -1) { +// outputStream.write(buffer, 0, length); +// } +// outputStream.flush(); +// outputStream.close(); +// fileInputStream.close(); +// +// return new FileDTO(true, file.getName(), null); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// +// return new FileDTO(false, null, "鏂囦欢涓嶅瓨鍦�"); +// +// +// } + +// public static void downloadFile(String directoryPath,HttpServletResponse response) { +// try { +//// File file = new File(directoryPath); +//// InputStream inputStream = new FileInputStream(file); +//// //杈撳嚭鏂囦欢 +//// 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(); +// File file = new File(directoryPath); +// if (!file.exists()) { +// // 鏂囦欢涓嶅瓨鍦紝鍙互鏍规嵁瀹為檯鎯呭喌杩涜澶勭悊 +// return; +// } +// +// response.reset(); +// response.setContentType("application/octet-stream"); +// response.setContentLength((int) file.length()); +// response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); +// +// BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); +// BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream()); +// byte[] buffer = new byte[4096]; +// int bytesRead; +// while ((bytesRead = bis.read(buffer)) != -1) { +// bos.write(buffer, 0, bytesRead); +// } +// bos.flush(); +// +// bis.close(); +// bos.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } + + public static ResponseEntity<Resource> downloadFile(String filename, HttpServletResponse response) { + try { + File file = new File(filename); + //鑾峰彇鏂囦欢鐨勫悕瀛楀啀娴忚鍣ㄤ笅杞介〉闈� + String name = file.getName(); + + // 鏋勫缓鏂囦欢璺緞 + Path filePath = Paths.get(filename); + Resource resource = new UrlResource(filePath.toUri()); + + if (resource.exists()) { + // 璁剧疆鍝嶅簲澶� + HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); + response.setContentType("application/octet-stream"); + headers.setContentDispositionFormData("attachment", filename); + response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "UTF-8")); +// headers.setContentDispositionFormData("attachment", URLEncoder.encode(name, "UTF-8")); +// response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8")); + + // 杩斿洖鏂囦欢鍝嶅簲 + return ResponseEntity.ok() + .headers(headers) + .body(resource); + +// // 璁剧疆鍝嶅簲澶� +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); +// headers.setContentDispositionFormData("attachment", URLEncoder.encode(name, "UTF-8")); +// response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8")); +// +// // 杩斿洖鏂囦欢鍝嶅簲 +// return ResponseEntity.ok() +// .headers(headers) +// .body(resource); + } else { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return null; + } + } catch (IOException e) { + e.printStackTrace(); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return null; + } + } + public static List<FileDTO> viewFileList(String directoryPath) { List<FileDTO> fileList = new ArrayList<>(); @@ -106,6 +237,8 @@ private String name; private long size; private String path; + private boolean success; + private String errorMessage; public FileDTO(String name, long size, String path) { this.name = name; @@ -119,6 +252,12 @@ // this.path = path; } + public FileDTO(boolean success, String name, String errorMessage) { + this.success = success; + this.name = name; + this.errorMessage = errorMessage; + } + // getters and setters } -- Gitblit v1.9.1