/** * 查看已签署合同 * @param response * @param contractId * @throws BusinessException */ @RequestMapping(value = "/viewPdfContractSign.json") @ResponseBody public void viewPdfContractSign(HttpServletResponse response,String contractId) throws BusinessException { response.reset(); response.setContentType("application/pdf"); try (OutputStream out = response.getOutputStream()) { if (org.apache.commons.lang.StringUtils.isNotBlank(contractId)) { ContractVO contractVO=new ContractVO(); contractVO.setId(contractId); Page page = new Page(); page= contractEntityService.queryEnterpriseContratcInfo(contractVO,page); contractVO=(ContractVO)page.getRecords().get(0); byte[] fileData=readInputStream(contractVO.getDownloadUrl()); if (fileData == null) { logger.error("文件未找到{}", fileData.toString()); return; } String encodeFileName = URLEncoder.encode(contractVO.getContractTitle(), "UTF-8"); response.setHeader("Content-Disposition", "inline; filename=\"" + encodeFileName + "\""); out.write(fileData); out.flush(); } } catch (Throwable e) { logger.warn("查看文件出错!"); } }
若要实现pdf文件在线预览必须设置contentType 和 response的头部属性 /** * 下载已签署合同 * @param response * @param contractId * @throws BusinessException */ @RequestMapping(value = "/downloadPdfContractSign.json") @ResponseBody public void downloadPdfContractSign(HttpServletResponse response,String contractId) throws BusinessException { response.reset(); response.setContentType("application/x-msdownload"); try (OutputStream out = response.getOutputStream()) { if (org.apache.commons.lang.StringUtils.isNotBlank(contractId)) { ContractVO contractVO=new ContractVO(); contractVO.setId(contractId); Page page = new Page(); page= contractEntityService.queryEnterpriseContratcInfo(contractVO,page); contractVO=(ContractVO)page.getRecords().get(0); byte[] fileData=readInputStream(contractVO.getDownloadUrl()); if (fileData == null) { logger.error("文件未找到{}", fileData.toString()); return; } String encodeFileName = URLEncoder.encode(contractVO.getContractTitle(), "UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeFileName + "\""); out.write(fileData); out.flush(); } } catch (Throwable e) { logger.warn("下载文件出错!"); } }
下载是更改上图标黄两处 /** * 根据文件下载地址得到文件字节数组 * @param urlStr * @return * @throws IOException */ public byte[] readInputStream(String urlStr) throws IOException { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置超时间为3秒 conn.setConnectTimeout(3 * 1000); // 防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); // 得到输入流 InputStream inputStream = conn.getInputStream(); byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while ((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); return bos.toByteArray(); }