解决jsp下载文件,迅雷下载路径不显示文件名称的问题
2016-08-16 17:21
633 查看
如果浏览器安装了迅雷的插件,在jsp页面调用java后台实现文件下载功能时,会自动弹出迅雷下载,迅雷的下载路径会显示.do或者.xhtml之类的,为了解决这个问题,jsp页面修改如下:
写一个<a>标签在页面上:
<a id="downloadUrl" target="_blank"></a>
导出按钮如下:
<a href="javascript:void(0)" id="biz_exp_button" class="easyui-linkbutton" data-options="iconCls : 'icon-download',plain:true" onclick="javascript:DataMonitor.file_download('wbj');">导出</a>
js代码如下:
var DataMonitor = { file_download : function(param) { url = CONTEXT_PATH + "/sjjk/file_download/"; var $a = $("#downloadUrl"); if(param == 'wbj'){ url += encodeURI("委办局接入数据") + ".xls"; $a.attr("href", url)[0].click(); }else if(param == 'csjcj'){ url += encodeURI("城市级基础库数据") + ".xls"; $a.attr("href", url)[0].click(); }else { } $a.attr("href", null); } };
java代码如下:
@RequestMapping("file_download/{fileName}.xls") public void fileDownload(@PathVariable String fileName, HttpServletResponse response, HttpServletRequest request) throws Exception { // String type = request.getParameter("type"); String type = null; String filename = ""; if (null != fileName) { filename = fileName.concat(".xls"); if ("委办局接入数据".equals(fileName)) { type = "wbj"; } else if ("城市级基础库数据".equals(fileName)) { type = "csjcj"; } } if (null == type) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } String userAgent = request.getHeader("User-Agent"); if (userAgent.contains("MSIE") || userAgent.contains("Trident") || userAgent.contains("Edge")) { filename = java.net.URLEncoder.encode(filename, "UTF-8"); } else { // 非IE浏览器的处理: filename = new String(filename.getBytes("UTF-8"), "ISO-8859-1"); } String realPath = request.getSession().getServletContext() .getRealPath(""); String filePath = this.dataMonitorService .queryDataToExp(type, realPath);//生成xls文件,返回路径,根据自己的业务修改 File file = new File(filePath); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;fileName=" + filename); response.setContentLength((int) file.length()); ServletOutputStream out; try { FileInputStream inputStream = new FileInputStream(file); out = response.getOutputStream(); int b = 0; byte[] buffer = new byte[512]; while (b != -1) { b = inputStream.read(buffer); out.write(buffer, 0, b); } inputStream.close(); out.close(); out.flush(); } catch (Exception e) { e.printStackTrace(); } }
相关文章推荐
- 解决jsp下载文件报错getOutputStream() has already,及无法下载中文名称标题的问题
- TFS 文件显示 未下载 却无法下载到本地 文件路径版定问题解决
- 【原】Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- JSP 文件 下载 代码 (不使用 jsp smart upload 组件) 解决中文名 问题
- 如何解决下载的CHM文件无法显示网页问题
- jsp实现文件下载与中文文件名乱码问题解决
- JSP实现文件下载同时解决中文乱码问题
- JSP 文件下载的相对完整代码(解决中文问题和Weblogic报错)
- 【原】Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- jsp实现文件下载与中文文件名乱码问题解决
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- DotNetZip解决文件名称中文字符不显示的问题
- jsp实现文件下载与中文文件名乱码问题解决
- JSP 文件下载的相对完整代码(解决中文问题和Weblogic报错)
- .net操作doc的代码(原样式导入)(导出:解决了迅雷下载.aspx文件的问题)
- 解决JSP引入JS文件后,JS文件中字符在页面上显示为乱码问题
- 如何解决下载的CHM文件无法显示网页问题
- 解决JSP路径问题的方法(jsp文件开头path, basePath作用) 收藏
- commons-FileUpload文件上传下载,及中文乱码、IE7路径错误问题解决
- jsp实现文件下载与中文文件名乱码问题解决