From 927359fdce884acdcd76b90008eb0303f4bdd29d Mon Sep 17 00:00:00 2001 From: 许鹏程 <1821349743@qq.com> Date: 星期二, 28 五月 2024 16:09:04 +0800 Subject: [PATCH] commit --- src/main/java/com/product/file/service/FileManagerService.java | 47 ++++++++++++++++++++++++++--------------------- 1 files changed, 26 insertions(+), 21 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..e01e65a 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.*; @@ -347,7 +348,7 @@ attachmentFse.setValue(CmnConst.ENCRPT_SIGN, Global.getPropertyToBoolean("file.encrypt", "true") ? 1 : 0); attachmentFse.setValue(CmnConst.ATTACHMENT_SIZE, fileLength); attachmentFse.setValue(CmnConst.UPLOAD_SIGN, needUpload2FileServerFlag ? 1 : 0); - + attachmentFse.setValue(CmnConst.FUNCTION_UUID, fse.getString(CmnConst.FUNCTION_UUID)); attachmentFse.setValue(CmnConst.ATTACHMENT_CONTAINER, fse.getString(CmnConst.ATTACHMENT_CONTAINER)); attachmentFse.setValue(CmnConst.ATTACHMENT_DOMAIN, fse.getString(CmnConst.ATTACHMENT_DOMAIN)); attachmentFse.setValue(CmnConst.MODULE_UUID, fse.getString(CmnConst.MODULE_UUID)); @@ -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) { @@ -537,7 +541,7 @@ try { temp.createNewFile(); } catch (IOException e) { - throw new BaseException(FileCode.GET_FILE_FAIL.getValue(), FileCode.GET_FILE_FAIL.getText() + (e.getMessage() != null ? e.getMessage() : "")); + throw new BaseException(FileCode.GET_FILE_FAIL.getValue(), FileCode.GET_FILE_FAIL.getText() + (e.getMessage() != null ? e.getMessage() + ",uuid:" + attachmentFse.getUUID() : "")); } try (FileOutputStream fos = new FileOutputStream(temp); BufferedOutputStream out = new BufferedOutputStream(fos)) { @@ -545,10 +549,10 @@ return temp; } catch (Exception e) { e.printStackTrace(); - throw new BaseException(FileCode.GET_FILE_FAIL.getValue(), FileCode.GET_FILE_FAIL.getText() + (e.getMessage() != null ? e.getMessage() : "")); + throw new BaseException(FileCode.GET_FILE_FAIL.getValue(), FileCode.GET_FILE_FAIL.getText() + (e.getMessage() != null ? e.getMessage() + ",uuid:" + attachmentFse.getUUID() : "")); } } - throw new BaseException(FileCode.GET_FILE_FAIL.getValue(), FileCode.GET_FILE_FAIL.getText()); + throw new BaseException(FileCode.GET_FILE_FAIL.getValue(), FileCode.GET_FILE_FAIL.getText() + ",uuid:" + attachmentFse.getUUID()); } /** @@ -556,7 +560,8 @@ */ public byte[] getFileContent(FieldSetEntity attachmentFse) throws BaseException { if (attachmentFse == null || !CmnConst.PRODUCT_SYS_ATTACHMENTS.equals(attachmentFse.getTableName())) { - return new byte[16]; + //杩斿洖涓�涓┖鐨勫瓧鑺傛暟缁� + return new byte[0]; } try (ByteArrayOutputStream os = new ByteArrayOutputStream();) { FTPService ftpService = new FTPService(); -- Gitblit v1.9.2