本文转自  :   http://dong-shuai22-126-com.iteye.com/blog/1772102

最简单的下载文件的方式,大家都清楚,是采用html 中的a标签的href连接形式进行下载。
只需要将文件的全路径赋值给href即可。但是这样的话,有的文件默认可以下载,有的则浏览器在网页上直接打开,有时候还会是乱码。这跟客户端没有关系,客户端完全是被动的,他在接收到html流的时候,分析报头,如果报头中指定了文件的下载方式,比如,为excel,则他就会弹框,提示用户是在线打开,还是说保存下载,如果报头中没有指定,浏览器就直接打开,这样对于特殊文件,很容易会产生乱码。所以为了避免这一点,需要在服务器端进行指定。
如果采用程序开发向客户端输出流进行下载的话,很容易指定,如下

response.setContentType("application/x-msdownload; charset=utf-8");
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**方式进行配置,所以文件路径中存在中文名,你必须得告诉服务器怎么解析,以什么样编码进行解析即可!

采用html 的a标签,href连接为文件时无法下载解决方案相关推荐

  1. 怎样解决jsp:include标签在包括html文件时遇到的乱码问题

    怎样解决jsp:include标签在包括html文件时遇到的乱码问题 参考文章: (1)怎样解决jsp:include标签在包括html文件时遇到的乱码问题 (2)https://www.cnblog ...

  2. 关于mysql连接jsp文件时出现Xxx Xxx cannot be resolved to a type的情况

    关于mysql连接jsp文件时出现Xxx cannot be resolved to a type的情况 原因有三: a.(可能是jdk版本问题 通常系统使用默认版本 解决办法是进项目配置设置,以及将 ...

  3. html a标签传中文参数ie乱码问题,在IE中通过a标签直接上载rar文件时以乱码方式打开...

    在IE中通过a标签直接下载rar文件时以乱码方式打开 在JSP的下载文件中,如果文件是rar类型的,一点击下载rar文件就直接打开,并且出现乱码,右键另存为浏览器也是默认为html格式,一直以为是浏览 ...

  4. java | (二十八)jsp(2)其它标签,AOP,文件上传下载,部署javaweb到Tomcat

    这里写目录标题 core核心标签,逻辑标签 其它标签 redirect标签 自定义标签 AOP编程 文件的上传和下载 fileupload组件实现web文件上传 文件下载 MVC模式 部署发布java ...

  5. 连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    问题与解决 未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"提供程序 错误. 1 string strCon = " Provider = Micr ...

  6. 用命令行连接mysql文件时出现错误_MySQL使用cmd命令窗口安装错误信息提示的解决方法...

    作者:二龙_01 转载自https://blog.csdn.net/ 近期学习使用mysql数据库遇到了一些安装上的问题,自己也上网百度了各种解决方法,其中有适合自己的,也发现了一些人云亦云的解决方法 ...

  7. 项目经验之:针对昨日FDO连接SDF文件报错,国外GIS论坛给出了一个思路.帮助我过关.

    针对C#通过FDO连接SDF文件出现如下错误解决方案: "外部组件发生异常" 在一遍国外论坛上看到这样一句话: 看到吗,跟我上面所发生的一个样错误的提示:那又如何解决呢,是什么原因 ...

  8. 项目经验之:针对昨日FDO连接SDF文件报错,国个GIS论坛给出了一个思路.帮助我过关.

    针对C#通过FDO连接SDF文件出现如下错误解决方案:  "外部组件发生异常" 在个遍国外论坛上看到这样一句话: 看到吗,跟我上面所发生的一个样错误的提示:那又如何解决呢,是什么原 ...

  9. HTML的a标签href属性指定相对路径与绝对路径的用法讲解

    href是链接前端文件的一个最常用的重要属性,这里我们就来看一下HTML的a标签href属性指定相对路径与绝对路径的用法讲解,需要的朋友可以参考下 在实际Web开发中,插入图片.包含CSS文件等都需要 ...

最新文章

  1. [数据结构]-散列表(哈希表)
  2. sublime配置python3_Sublime Text 3 Python3环境配置
  3. 错误:C:\Windows\System32\ssleay32.dll: Can't load IA 32-bit .dll on a AMD 64-bit
  4. python 进程编程速成
  5. 实验9 根据材料编程
  6. HDU-3998 Sequence LIS统计
  7. 给DNS划重点:分析ISC BIND必知必会
  8. 【bzoj1976】[BeiJing2010组队]能量魔方 Cube 网络流最小割
  9. java实现Execl中的STDEVP函数
  10. 全国省份简称(备用)
  11. fprintf()函数的用法结合代码
  12. linux执行arm文件,Linux安装FFMPEG转换amr为mp3格式
  13. 5 个最好的免费开源反病毒工具(PC版)
  14. 按键控制LED亮灭(CC2530)
  15. node中解压zip文件
  16. Smart200控制两台V90伺服,绝对定位和速度控制
  17. 流媒体-RTMP协议-rtmpdump-flv封装解析(一)
  18. vue中实现文字间加空格的方法
  19. 推荐10款设计软件,全是设计大牛收藏夹里的
  20. 为什么说消费主义害死人

热门文章

  1. java profile cpu_Java进程高CPU使用调查方法简介
  2. php仿糗事百科,thinkphp精仿糗事百科整站源码
  3. 想转行网络安全行业,究竟是参加培训班还是靠自学?
  4. 工作随记-Java利用企业微信群机器人定时发送消息
  5. 【翻译论文】An Object-Based Approach for Urban Land Cover Classification(2013)
  6. 收房入住注意事项及程序
  7. 零基础JavaScript-DOM入门(第一天)(第二天)
  8. oracle季初,Oracle中取月初,月末,季初,季末及年初,年末时间总结
  9. 属于程序员的6个接私活的网站,你有技术就能变成钱。开阔眼界!!!
  10. iOS开发 - 若把上线版本下架,重新提交新的版本,通过审核后显示下架状态