From c26c4778ffaa583db2d56d82c3c861e724d0000c Mon Sep 17 00:00:00 2001
From: 许鹏程 <1821349743@qq.com>
Date: 星期四, 29 六月 2023 09:32:36 +0800
Subject: [PATCH] poi、easyexcel、poi-tl升级 ,合并空调中的报表、数据源模块

---
 src/main/java/com/product/file/service/FileManagerService.java |   36 ++++++++++++++++++++----------------
 1 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/product/file/service/FileManagerService.java b/src/main/java/com/product/file/service/FileManagerService.java
index c66be37..dee9482 100644
--- a/src/main/java/com/product/file/service/FileManagerService.java
+++ b/src/main/java/com/product/file/service/FileManagerService.java
@@ -29,6 +29,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -400,31 +401,29 @@
 		boolean needDownloadFromServerFlag = "1".equals(attachmentFse.getString(CmnConst.UPLOAD_SIGN));
 		String dir = attachmentFse.getString(CmnConst.ATTACHMENT_URL);
 		String fileName = attachmentFse.getString(CmnConst.ATTACHMENT_TITLE);
+		//鐪熷疄鏂囦欢鍚�
+		String realFileName = attachmentFse.getString(CmnConst.FILE_NAME);
 		String viewOnlineSign = attachmentFse.getString(CmnConst.VIEW_ONLINE_SIGN);
 		boolean encrptSignFlag = "1".equals(attachmentFse.getString(CmnConst.ENCRPT_SIGN));
 		boolean needOnlineViewFlag = "1".equals(fse.getString(CmnConst.NEED_ONLINE_VIEW)) && "1".equals(viewOnlineSign);
-		if (needOnlineViewFlag) {
-			// 闇�瑕佸湪绾块瑙堜笖杞崲涔嬪悗鎵嶈兘鍦ㄧ嚎棰勮
+		if (needOnlineViewFlag && !realFileName.endsWith(".xlsx") && !realFileName.endsWith(".xls")) {
+			// 闇�瑕佸湪绾块瑙堜笖杞崲涔嬪悗鎵嶈兘鍦ㄧ嚎棰勮 excel 鏂囦欢涓嶉渶瑕佽浆鎹㈢洿鎺ヨ緭鍑洪瑙�
 			dir += File.separator + CmnConst.TRANSFER_DIR_NAME;
 		}
 
-		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-		String userAgent = request.getHeader("User-Agent");
-		String file_name = attachmentFse.getString("file_name");
-		if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
-			file_name = java.net.URLEncoder.encode(file_name, "UTF-8");
-		} else {
-			// 闈濱E娴忚鍣ㄧ殑澶勭悊锛�
-			file_name = new String(file_name.getBytes("UTF-8"), "ISO-8859-1");
-		}
 		String path = dir + File.separator + fileName;
 		if (needDownloadFromServerFlag) {
 			// 闇�瑕佷粠闄勪欢鏈嶅姟鍣ㄤ笂鍙栨枃浠�
 			FTPService ftpService = new FTPService();
 			logger.info("闇�瑕佷粠闄勪欢鏈嶅姟鍣ㄤ笂鍙栨枃浠�...");
-			response.setContentType("multipart/form-data");
-			response.setHeader("Content-disposition",
-					String.format("attachment; filename=\"%s\"", file_name));
+			response.setHeader("Access-Control-Expose-Headers", "*");
+			if (realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls")) {
+				response.setContentType("application/vnd.ms-excel");
+			} else {
+				response.setContentType("multipart/form-data");
+			}
+			response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
+			//璁剧疆澶翠腑鐨勬枃浠剁被鍨�
 			if (!needOnlineViewFlag && !encrptSignFlag) {
 				logger.info("涓嶉渶瑕佽В瀵嗕笖鑾峰彇鍘熸枃浠�...");
 				try (ServletOutputStream os = response.getOutputStream()) {
@@ -483,9 +482,14 @@
 			}
 			int len;
 			byte[] b = new byte[1024];
-			response.setContentType("multipart/form-data");
 			InputStream is = new FileInputStream(file);
-			response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", file_name));
+			response.setHeader("Access-Control-Expose-Headers", "*");
+			if (realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls")) {
+				response.setContentType("application/vnd.ms-excel");
+			} else {
+				response.setContentType("multipart/form-data");
+			}
+			response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
 			response.setContentLengthLong(file.length());
 			try (ServletOutputStream os = response.getOutputStream()) {
 				while ((len = is.read(b)) > 0) {

--
Gitblit v1.9.2