采用html 的a标签,href连接为文件时无法下载解决方案
来源:互联网 发布:sql 不等于空字符串 编辑:程序博客网 时间:2024/05/17 18:41
最简单的下载文件的方式,大家都清楚,是采用html 中的a标签的href连接形式进行下载。
只需要将文件的全路径赋值给href即可。但是这样的话,有的文件默认可以下载,有的则浏览器在网页上直接打开,有时候还会是乱码。这跟客户端没有关系,客户端完全是被动的,他在接收到html流的时候,分析报头,如果报头中指定了文件的下载方式,比如,为excel,则他就会弹框,提示用户是在线打开,还是说保存下载,如果报头中没有指定,浏览器就直接打开,这样对于特殊文件,很容易会产生乱码。所以为了避免这一点,需要在服务器端进行指定。
如果用a的连接的话,需要修改服务的设置,对于tomcat而言,查看conf/web.xml,寻找所有的mime类型,如果存在你需要下载的文件的话,即不用进行修改,如果不存在的话,需要添加,然后重启服务器,给a标签赋值要下载文件的全路径即可(比如xls的文件就不用修改配置,而rar就需要配置,zip也不需要配置);注意,如果路径中包含中文的话,还需要稍微改动,否则可能会无法下载,需要在Server.xml文件中,在http端口设置处,需要加上编码,如下:
只需要将文件的全路径赋值给href即可。但是这样的话,有的文件默认可以下载,有的则浏览器在网页上直接打开,有时候还会是乱码。这跟客户端没有关系,客户端完全是被动的,他在接收到html流的时候,分析报头,如果报头中指定了文件的下载方式,比如,为excel,则他就会弹框,提示用户是在线打开,还是说保存下载,如果报头中没有指定,浏览器就直接打开,这样对于特殊文件,很容易会产生乱码。所以为了避免这一点,需要在服务器端进行指定。
如果采用程序开发向客户端输出流进行下载的话,很容易指定,如下
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0)response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("UTF-8"), "ISO8859-1"));// firefox浏览器else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0)response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));// IE浏览器
如果用a的连接的话,需要修改服务的设置,对于tomcat而言,查看conf/web.xml,寻找所有的mime类型,如果存在你需要下载的文件的话,即不用进行修改,如果不存在的话,需要添加,然后重启服务器,给a标签赋值要下载文件的全路径即可(比如xls的文件就不用修改配置,而rar就需要配置,zip也不需要配置);注意,如果路径中包含中文的话,还需要稍微改动,否则可能会无法下载,需要在Server.xml文件中,在http端口设置处,需要加上编码,如下:
<Connector port="8282" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8" />
注意URIEncoding,之所以加上,是因为,针对tomcat而言,tomcat对于get方式请求过来的编码,是在这里进行配置的,对于post请求过来的编码解析方式,可以用传统的request.setContent**方式进行配置,所以文件路径中存在中文名,你必须得告诉服务器怎么解析,以什么样编码进行解析即可!
转载来自:点击打开链接
阅读全文
0 0
- 采用html 的a标签,href连接为文件时无法下载解决方案
- 采用html 的a标签,href连接为文件时无法下载解决方案
- 使用html <a href=""/>标签连接action的方法
- 使用html <a href=""/>标签连接action的方法
- html的href标签不能下载apk文件
- HTML <a> 标签的 href 属性
- 删除HTML里的a href标签
- HTML <a> 标签的 href 属性
- HTML <a> 标签的 href 属性
- HTML的a标签href设为零操作的原因和方式
- a标签的href
- html a href 文件下载 IE直接打开 内容乱码
- html A标签的onclick事件和href的使用
- html A标签的onclick事件和href的使用
- html A标签的onclick事件和href的使用
- html A标签的onclick事件和href的使用
- html A标签的onclick事件和href的使用
- html中a标签中的onclick和href的使用
- Python&Opencv&Pycharm安装及环境配置
- 简述重载与重写的区别
- C6748_EMIF_NandFlash_访问异步地址
- NSProxy 与定时器
- 点击列表中的某条记录携带信息进行页面跳转
- 采用html 的a标签,href连接为文件时无法下载解决方案
- ROS安装hector_quadrotor
- java
- 设计模式学习--单例模式
- (连载)一个很长的梦——(二)
- Java基础精选,你答对了几道?
- HPU 1458 (数状数组,利用的很神奇)
- SpringMVC(9):JSP报错:#{...} is not allowed in template text
- java 框架之间的比较