From 8611fb4ccf61bd32a381570d7fac58909d371325 Mon Sep 17 00:00:00 2001 From: 许鹏程 <1821349743@qq.com> Date: 星期一, 19 六月 2023 15:22:08 +0800 Subject: [PATCH] 附件预览 --- src/main/java/com/product/file/service/FileManagerService.java | 32 ++++++++++++++++++-------------- 1 files changed, 18 insertions(+), 14 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..02613ba 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,6 +401,8 @@ 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); @@ -408,23 +411,19 @@ 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