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