| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | | import java.net.URLEncoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | |
| | | 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); |
| | |
| | | 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 { |
| | | // 非IE浏览器的处理: |
| | | 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()) { |
| | |
| | | } |
| | | 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) { |