一、前端
<a href="${pageContext.request.contextPath}/sysaction/downloadSRReader?url=/download/SRReader.exe" >身份证读卡器</a>
二、后端
/**下载身份证读卡器程序*/ @RequestMapping("/downloadSRReader") public void downloadSRReader(HttpServletRequest request,HttpServletResponse response,String url){ /** 定义文件路径,根据你的文件夹结构,可能需要做修改*****/ String serviceUrl = request.getSession().getServletContext().getRealPath("/"); File outFile=new File(serviceUrl+url); downloadFile(outFile,response); }
/** * 下载文件 * * @param */ protected void downloadFile(File filePath, HttpServletResponse response) { try { response.reset(); // 非常重要 response.setContentType("application/x-msdownload"); // 用来弹出保存窗口 ,设置 为attachment response.setHeader("Content-Disposition", "attachment; filename=" + new String(filePath.getName().getBytes(), "ISO-8859-1")); OutputStream out = response.getOutputStream(); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream( filePath)); byte buffer[] = new byte[1024]; int size; while ((size = fis.read(buffer)) != -1) { out.write(buffer, 0, size); } fis.close(); out.flush(); out.close(); } catch (Exception ex) { logger.error("远程主机强迫关闭了一个现有的连接"+filePath); } }