JSP文件下载
程序员文章站
2022-03-05 12:28:59
...
JSP工具之,文件下载
<% String filePath = request.getParameter("filePath"); filePath = URLDecoder.decode(filePath, "UTF-8"); String fileName = request.getParameter("fileName"); fileName = URLDecoder.decode(filePath, "UTF-8"); out.clear(); if(filePath==null || "".equals(filePath)){ response.getWriter().write("{success:false}"); }else{ File downFile = new File(filePath); if(downFile.exists() && downFile.isFile()){ String mimeType = null;//媒体类型 boolean isInline = false;//是否要在浏览器打开 mimeType = application.getMimeType(filePath); if(mimeType==null) mimeType = "application/octet-stream;charset=iso8859-1"; response.setContentType(mimeType); String ua = request.getHeader("User-Agent");//获取终端类型 if(ua==null) ua = "User-Agent:Mozilla/4.0(compatible;MSIE 6.0;)"; boolean isIE = ua.toLowerCase().indexOf("msie")!=-1; if(isIE && ! isInline){ mimeType = "application/x-msdownload"; } String downFileName = new String(fileName.getBytes(),"iso8859-1"); String inlineType = isInline ? "inline" : "attachment"; response.setHeader("Content-Disposition", inlineType+";filename=\""+downFileName+"\""); response.setContentLength((int) downFile.length()); byte[] buffer = new byte[4096]; BufferedOutputStream output = null; BufferedInputStream input = null; try{ output = new BufferedOutputStream(response.getOutputStream()); input = new BufferedInputStream(new FileInputStream(downFile)); int n = -1; while((n=input.read(buffer,0,4096))>-1){ output.write(buffer,0,n); } response.flushBuffer(); }catch(Exception e){ }finally{ if(input != null) input.close(); if(output != null) output.close(); } }else{ response.getWriter().write("{\"success\":false}"); } }%> //这里不能换行,否者会报错,原因解析的时候会当初输出流