背景:项目中大量使用a标签href属性直接写文件资源路径,在火狐浏览器上可以直接使用,但是在ie8下则在浏览器直接打开,显示为乱码,为尽量减少修改,写以下代码。

js代码

/*** 在页面中引入该js文件:<%=PathUtil.jsLink("com.bop.web.fgwwjcommon", "/common/js/ie8-download-plug.js")%>* 页面中a标签的写法:<a class="mini-button" href="/ResourceFiles/.../*.xls" iconCls="icon-download" >* 解决ie8下页面中a标签在href属性直接写文件路径无法下载的问题,该插件只筛选后缀名为.xls/.xlsx/.rar/.doc/.docx/.pdf格式文件,* 需要添加其他文件格式请添加:[href$='.jpg'](以jpg格式为例,多个文件类型以英文逗号分隔,中间不得有空格)*/
replaceHref();
function replaceHref(){var a = $("[href$='.xls'],[href$='.xlsx'],[href$='.rar'],[href$='.doc'],[href$='.docx'],[href$='.pdf']");for (var i = 0; i < a.length; i++) {$(a[i]).attr("href","javascript:$.downloadTemplate('"+$(a[i]).attr("href")+"')");}
}
//文件下载
jQuery.downloadTemplate = function(filePath){jQuery('<form action="/fgwwjcommon/commonservice/downloadTemplate?theme=none" method="post">' +  // action请求路径及推送方法'<input type="text" name="filePath" value="'+filePath+'"/>' + // 文件名称及文件路径'</form>').appendTo('body').submit().remove();
};

java代码

@Actionpublic void downloadTemplate() {HttpServletResponse response = ActionContext.getActionContext().getHttpServletResponse();HttpServletRequest resquest = ActionContext.getActionContext().getHttpServletRequest();String filePath = resquest.getParameter("filePath");String resourcePath = System.getProperty("resourceFiles.location");filePath = filePath.replace("/ResourceFiles", resourcePath);try {// path是指欲下载的文件的路径。File file = new File(filePath);// 取得文件名。String fileName = file.getName();// 特殊处理火狐浏览器中文乱码问题。String agent = resquest.getHeader("USER-AGENT");if (agent != null && agent.toLowerCase().indexOf("firefox") > 0) {fileName = "=?UTF-8?B?" + (new String(Base64.getEncoder().encode(fileName.getBytes("UTF-8")))) + "?=";} else {fileName = java.net.URLEncoder.encode(fileName, "UTF-8");}// 以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(filePath));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.setContentType("text/html;charset=UTF-8");response.addHeader("Content-Disposition", "attachment;filename=" + fileName);response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}}

a标签实现文件下载(ie8可用)相关推荐

  1. 面试官:如何用a标签实现文件下载?(一文带你手撕知识点)

    前言 大家好,今天给大家带来前端小知识:前端利用a标签实现文件(图片)下载,也就是教大家利用a标签或者是 window.open() 来实现下载功能. 文章目录 前言 常用方式 方法分析 代码实现 常 ...

  2. springmvc 下载文件ie8可用

    springmvc 下载文件ie8可用 springmvc下载文件.需要获得相应的HttpServletRequest和HttpServletResponse.然后通过输出流把文件输出到浏览器.下面是 ...

  3. maven+springmvc下载excle文件——ie8可用

    maven+springmvc下载excle文件--ie8可用 转载于:https://www.cnblogs.com/zhujiabin/p/5866535.html

  4. 前端实现文件下载(a标签实现文件下载 避免直接打开问题)

    先说结论 所有情况通用的方式: 后端设置下载请求的响应头 Content-Disposition: attachment; filename="filename.jpg" atta ...

  5. a 标签实现文件下载(解决打开的问题)

    实现: a标签实现文件下载,是使用的相对路径下载. js代码 <a class="btn btn-success btn-sm" href="../docs/doc ...

  6. js使用a标签实现文件下载功能

    工作中遇到下载txt文本文件的下载需求,稍作整理,下载示例如下: <button onclick="log()">文件下载</button>// 日志函数 ...

  7. a标签实现文件下载功能

    文件下载原理: java后台只能做到返回二进制流或文件给前端,最终在前端页面创建一个a,然后触发a的点击事件实现点击下载效果. 1.无需token的 2.请求头需要token 接口: 点击事件:

  8. firefox不兼容a标签文件下载

    a标签下载文件不兼容的firefox问题 前言:一般使用a标签进行文件下载,总是使用JS创建一个a标签并放在body中,然后使用a.click方法下载,但此方法不适用于火狐 下面就是最实用的一种方式, ...

  9. html video标签问题,用HTML5 video标签的一系列问题

    H5标签的video,我想写过前台代码的人,都不会陌生吧.但video标签还是有少量问题. 一.PC端的兼容问题: H5的标签不兼容ie8包括ie8以下的浏览器:处理办法:用js的库video.js, ...

最新文章

  1. Visual Basic 永远29岁,Visual Basic 谢幕!
  2. ws配置 zuul_SpringCloud系列研究---服务网关zuul
  3. 分享10个jQuery页面动态编辑插件
  4. 这家总资产排名第一的银行,为什么叫“小”摩?
  5. 最担心的事情还是发生了!三星折叠屏手机翻车:闪屏、黑屏、“脱皮”
  6. HDU2100 Lovekey【大数+进制】
  7. ApacheBench测试Web并发
  8. 查询子串_你知道什么是 MySQL 的模糊查询?
  9. 大学计算机基础vfp程序设计课程试验报告簿,vfp实验报告2014.doc
  10. Control-车辆动力学模型
  11. jquery中的ajax写法
  12. 三菱PLC和卓岚串口服务器使用方法
  13. 【解决方法】Windows Server 2016/2019无法安装Flash
  14. 五个拿来就能用的炫酷登录页面
  15. 免备案CDN免费 注册就送1T免费加速流量
  16. 多个moudle混淆配置问题
  17. 物体识别全流程(Ubuntu16.04)结合ROS
  18. 用 Androidx + 蓝牙HC05 点灯(2): Handler 掌舵人 和 Thread 线人,逮着蓝牙老大说黑话:此灯为我开,101011...
  19. 物联网智慧农业实训室实训基地建设方案(完整版)
  20. Spearman’s correlation coefficient--斯皮尔曼相关系数pytorch与numpy实现

热门文章

  1. 50个最好的firefox扩展让你尽情冲浪
  2. 【计算机视觉】OpenCV实现单目相机标定
  3. 最新微信QQ域名防封、微信群活码系统
  4. 《c语言修炼内功之第二种境界(看代码就是内存)之关键字系列一》
  5. 如何做一个小程序商城,需要多少钱
  6. 【入门】小明的幸运数
  7. 【CISSP】安全评估与测试
  8. Python学习 Day31 JS类数组对象
  9. C语言实现求π/4=1-1/3+1/5-1/7+···求π的近似值,直到某一项的绝对值小于10-6为止
  10. 大学计算机VB考试试题,大学计算机二级VB测试题