From c356c77683d055f82a668c28db8b56f9c5e04b84 Mon Sep 17 00:00:00 2001 From: 许鹏程 <1821349743@qq.com> Date: 星期一, 19 五月 2025 13:19:39 +0800 Subject: [PATCH] fix:优化xls在web端预览失败的问题 --- src/main/java/com/product/file/service/FileManagerService.java | 43 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/product/file/service/FileManagerService.java b/src/main/java/com/product/file/service/FileManagerService.java index b20eae9..add8ab3 100644 --- a/src/main/java/com/product/file/service/FileManagerService.java +++ b/src/main/java/com/product/file/service/FileManagerService.java @@ -18,6 +18,7 @@ import com.product.core.spring.context.SpringMVCContextHolder; import com.product.file.config.CmnConst; import com.product.file.config.FileCode; +import com.product.file.util.AsposeUtil; import com.product.file.util.CreateDocumentIndexThread; import com.product.file.util.FileUtil; import com.product.file.util.FileUtils; @@ -445,16 +446,17 @@ } } } + /** * 绉诲姩绔崌绾э紝瀹夎鍖呬笅杞� * * @param fse * @param response */ - public void getFileContent(FieldSetEntity fse, HttpServletResponse response,boolean isUpgrade) throws IOException { - if(isUpgrade) { + public void getFileContent(FieldSetEntity fse, HttpServletResponse response, boolean isUpgrade) throws IOException { + if (isUpgrade) { FieldSetEntity attachmentFse = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_ATTACHMENTS, fse.getUUID(), false); - if (attachmentFse == null || !"product_sys_app_version".equals(attachmentFse.getString("attachment_data_table")) ) { + if (attachmentFse == null || !"product_sys_app_version".equals(attachmentFse.getString("attachment_data_table"))) { return; } logger.info("姝e湪鑾峰彇鏂囦欢娴�..."); @@ -466,8 +468,8 @@ 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); - - String clientType =CoreConst.CLIENT_TYPE_APP; + + String clientType = CoreConst.CLIENT_TYPE_APP; String contentType = "multipart/form-data"; boolean isExcel = realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls"); @@ -582,8 +584,9 @@ } logger.info("鏂囦欢娴佽幏鍙栨垚鍔�"); } - + } + /** * 鎻愬彇鏂囦欢淇℃伅-涓嬭浇鏂囦欢鎴栬�呭湪绾块瑙堟枃浠� * @@ -656,6 +659,19 @@ tempOs.flush(); tempOs.close(); } + boolean delete = false; + if (realFileName.endsWith(".xls") && needOnlineViewFlag && localTempFile.exists() && !CoreConst.CLIENT_TYPE_APP.equals(clientType)) { + //杞崲涓簒lsx + AsposeUtil.xls2xlsx(localTempFile.getPath(), getSystemConfig("temp.dir", "/attachment/temp") + "/" + localTempFile.getName(), "xls"); + File oldFile = localTempFile; + localTempFile = new File(getSystemConfig("temp.dir", "/attachment/temp") + "/" + localTempFile.getName()); + if (!localTempFile.isFile()) { + localTempFile = oldFile; + } else { + delete = true; + oldFile.delete(); + } + } response.setContentLengthLong(localTempFile.length()); InputStream is = new FileInputStream(localTempFile); int len; @@ -695,6 +711,18 @@ FileUtils.convertPdf(false, false, encrptSignFlag, true, tempSourceFile, dir, fileName, attachmentFse.getString(CmnConst.FILE_NAME)); tempSourceFile.delete(); } + boolean delete = false; + if (realFileName.endsWith(".xls") && needOnlineViewFlag && file.exists() && !CoreConst.CLIENT_TYPE_APP.equals(clientType)) { + //杞崲涓簒lsx + AsposeUtil.xls2xlsx(file.getPath(), getSystemConfig("temp.dir", "/attachment/temp") + "/" + file.getName(), "xls"); + File oldFile = file; + file = new File(getSystemConfig("temp.dir", "/attachment/temp") + "/" + file.getName()); + if (!file.isFile()) { + file = oldFile; + } else { + delete = true; + } + } int len; byte[] b = new byte[1024]; InputStream is = new FileInputStream(file); @@ -717,6 +745,9 @@ os.flush(); } is.close(); + if (delete) { + file.delete(); + } } logger.info("鏂囦欢娴佽幏鍙栨垚鍔�"); } -- Gitblit v1.9.2