这几天一直很纳闷,在Tomcat部署的网站中的下载文件中,如果文件是rar类型的,一点击下载rar文件就直接打开,并且出现乱码,右键另存为浏览器也是默认为html格式,一直以为是浏览器IE的问题,后来发现其实不关浏览器的问题,而是Tomcat服务器配置的问题,具体如下:

web.xml文件中配置<mime-mapping>下载文件类型
TOMCAT在默认情况下下载.rar的文件是把文件当作text打开,以至于IE打开RAR文件为乱码,如果遇到这种情况时不必认为是浏览器的问题,大多数浏览器应该不会死皮赖脸地把二进制文件当作文本打开,一般都是服务器给什么浏览器就开什么.解决方法:

打开conf/web.xml,加入下面的代码.

 <mime-mapping> 
 <extension>doc</extension>
 <mime-type>application/msword</mime-type> 
 </mime-mapping> 
 <mime-mapping> 
 <extension>xls</extension> 
 <mime-type>application/msexcel</mime-type> 
 </mime-mapping> 
 <mime-mapping> 
 <extension>pdf</extension> 
 <mime-type>application/pdf</mime-type> 
 </mime-mapping>
 <mime-mapping> 
 <extension>zip</extension> 
 <mime-type>application/zip</mime-type> 
 </mime-mapping>
 <mime-mapping> 
 <extension>rar</extension> 
 <mime-type>application/rar</mime-type> 
 </mime-mapping>
 <mime-mapping> 
 <extension>txt</extension> 
 <mime-type>application/txt</mime-type> 
 </mime-mapping>
 <mime-mapping> 
 <extension>chm</extension> 
 <mime-type>application/mshelp</mime-type>
 </mime-mapping> 
 <mime-mapping>
  <extension>mp3</extension>
  <mime-type>audio/x-mpeg</mime-type>
 </mime-mapping>

重启TOMCAT,清除IE缓存,再打开RAR的文件时就可以正常下载了.

不同的ContentType 会影响客户端所看到的效果.

默认的ContentType为 text/html  也就是网页格式.

代码如:

 <% response.ContentType ="text/html" %>  
 <!--#i nclude virtual="/ContentType.html" -->

显示的为网页,而

 <% response.ContentType ="text/plain" %>  
 <!--#i nclude virtual="/sscript/ContentType.html" -->

则会显示html原代码.

以下为一些常用的 ContentType

GIF images 
 <% response.ContentType ="image/gif" %>  
 <!--#i nclude virtual="/myimage.gif" --> 
 JPEG images 
 <% response.ContentType ="image/jpeg" %>  
 <!--#i nclude virtual="/myimage.jpeg" --> 
 TIFF images 
 <% response.ContentType ="image/tiff" %>  
 <!--#i nclude virtual="/myimage.tiff" --> 
 MICROSOFT WORD document 
 <% response.ContentType ="application/msword" %>  
 <!--#i nclude virtual="/myfile.doc" --> 
 RTF document 
 <% response.ContentType ="application/rtf" %>  
 <!--#i nclude virtual="/myfile.rtf" --> 
 MICROSOFT EXCEL document 
 <% response.ContentType ="application/x-excel" %>  
 <!--#i nclude virtual="/myfile.xls" --> 
 MICROSOFT POWERPOINT document 
 <% response.ContentType ="application/ms-powerpoint" %>  
 <!--#i nclude virtual="/myfile.pff" --> 
 PDF document 
 <% response.ContentType ="application/pdf" %>  
 <!--#i nclude virtual="/myfile.pdf" --> 
 ZIP document 
 <% response.ContentType ="application/zip" %>  
 <!--#i nclude virtual="/myfile.zip" --> 

下面是更详细的ContentType

application/andrew-inset ez  
 application/mac-binhex40 hqx  
 application/mac-compactpro cpt  
 application/mathml+xml mathml  
 application/msword doc  
 application/octet-stream bin dms lha lzh exe class so dll  
 application/oda oda  
 application/ogg ogg  
 application/pdf pdf  
 application/postscript ai eps ps  
 application/rdf+xml rdf  
 application/smil smi smil  
 application/srgs gram  
 application/srgs+xml grxml  
 application/vnd.mif mif  
 application/vnd.mozilla.xul+xml xul  
 application/vnd.ms-excel xls  
 application/vnd.ms-powerpoint ppt  
 application/vnd.wap.wbxml wbxml  
 application/vnd.wap.wmlc .wmlc wmlc  
 application/vnd.wap.wmlscriptc .wmlsc wmlsc  
 application/voicexml+xml vxml  
 application/x-bcpio bcpio  
 application/x-cdlink vcd  
 application/x-chess-pgn pgn  
 application/x-cpio cpio  
 application/x-csh csh  
 application/x-director dcr dir dxr  
 application/x-dvi dvi  
 application/x-futuresplash spl  
 application/x-gtar gtar  
 application/x-hdf hdf  
 application/x-httpd-php .php .php4 .php3 .phtml  
 application/x-httpd-php-source .phps  
 application/x-javascript js  
 application/x-koan skp skd skt skm  
 application/x-latex latex  
 application/x-netcdf nc cdf  
 application/x-pkcs7-crl .crl  
 application/x-sh sh  
 application/x-shar shar  
 application/x-shockwave-flash swf  
 application/x-stuffit sit  
 application/x-sv4cpio sv4cpio  
 application/x-sv4crc sv4crc  
 application/x-tar .tgz tar  
 application/x-tcl tcl  
 application/x-tex tex  
 application/x-texinfo texinfo texi  
 application/x-troff t tr roff  
 application/x-troff-man man  
 application/x-troff-me me  
 application/x-troff-ms ms  
 application/x-ustar ustar  
 application/x-wais-source src  
 application/x-x509-ca-cert .crt  
 application/xhtml+xml xhtml xht  
 application/xml xml xsl  
 application/xml-dtd dtd  
 application/xslt+xml xslt  
 application/zip zip  
 audio/basic au snd  
 audio/midi mid midi kar  
 audio/mpeg mpga mp2 mp3  
 audio/x-aiff aif aiff aifc  
 audio/x-mpegurl m3u  
 audio/x-pn-realaudio ram rm  
 audio/x-pn-realaudio-plugin rpm  
 audio/x-realaudio ra  
 audio/x-wav wav  
 chemical/x-pdb pdb  
 chemical/x-xyz xyz  
 image/bmp bmp  
 image/cgm cgm  
 image/gif gif  
 image/ief ief  
 image/jpeg jpeg jpg jpe  
 image/png png  
 image/svg+xml svg  
 image/tiff tiff tif  
 image/vnd.djvu djvu djv  
 image/vnd.wap.wbmp .wbmp wbmp  
 image/x-cmu-raster ras  
 image/x-icon ico  
 image/x-portable-anymap pnm  
 image/x-portable-bitmap pbm  
 image/x-portable-graymap pgm  
 image/x-portable-pixmap ppm  
 image/x-rgb rgb  
 image/x-xbitmap xbm  
 image/x-xpixmap xpm  
 image/x-xwindowdump xwd  
 model/iges igs iges  
 model/mesh msh mesh silo  
 model/vrml wrl vrml  
 text/calendar ics ifb  
 text/css css  
 text/html .shtml html htm  
 text/plain asc txt  
 text/richtext rtx  
 text/rtf rtf  
 text/sgml sgml sgm  
 text/tab-separated-values tsv  
 text/vnd.wap.wml .wml wml  
 text/vnd.wap.wmlscript .wmls wmls  
 text/x-setext etx  
 video/mpeg mpeg mpg mpe  
 video/quicktime qt mov  
 video/vnd.mpegurl mxu  
 video/x-msvideo avi  
 video/x-sgi-movie movie  
 x-conference/x-cooltalk ice 

TXT文件做下载的JS实现

<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language="JavaScript">   
  function openfile(url)   {   
  var a =window.open(url,"_blank","");   
  a.document.execCommand("SaveAs");   
  a.close();   
  }   
</script>
</head>
<body>
<p><a href="#" onclick='openfile("aa.txt")'>下载</a></p>
</body>
</html>
转载请注明出处[http://samlin.cnblogs.com/] 

Tomcat 在IE中下载rar文件直接以乱码方式打开解决方案的更多相关文章

  1. 【转】在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)

    在Android Studio中下载Android SDK的两种方式(Android Studio3.0.windows) 方式一.设置HTTP Proxy1. 打开Settings2. 点击HTTP ...

  2. 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码

    利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏  ...

  3. 在IE中下载Office2007文件时在对话框中下载文件变成ZIP文件的问题

    导致原因: 从IIS或者Tomcat之类的Web服务器通过二进制流下载文件时(比如通过设置Header为Content-disposition:inline),如果被下载的文件是Office2007的 ...

  4. 使用原生node.js搭建HTTP服务器,支持MP4视频、图片传输,支持下载rar文件

    前言 如何安装node.js,如何搭建一个简易的http服务器我这里就不再赘述了,不懂的同学可以先去学习一下.当然了,我写的也就属于简易版的增强版,大家有什么高见的欢迎提出,然后进入正题. 目录结构 ...

  5. 在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)

    方式一:网站下载:https://androidsdkmanager.azurewebsites.net/SDKPlatform 方式二.设置HTTP Proxy1. 打开Settings2. 点击H ...

  6. 前端调用后端接口下载excel文件的几种方式

    今天有一个导出相应数据为excel表的需求.后端的接口返回一个数据流,一开始我用axios(ajax类库)调用接口,返回成功状态200,但是!但是浏览器没有自动下载excel表,当时觉得可能是ajax ...

  7. eclipse开发工具内打开某js文件总是用记事本方式打开的问题

    问题现象: 开发时不知道按到了什么快捷键,导致在某js文件内点击某调用方法时莫名其妙的用记事本方式打开了该js文件,试了几次都是这样.索性将该js文件关掉重新打开,结果双击该文件还是弹出了一个记事本, ...

  8. Tomcat web.xml中定义了文件扩展名到MIME类型的对应关系

    Tomcat在返回静态资源时,会根据资源文件的扩展名产生对应的content-type头(也即MIME类型)添加到response header中. 在Tomcat的web.xml规定了扩展名及相应M ...

  9. 用DELPHI中实现RAR文件解压到指定一目录

    一个RAR压缩文件,用DELPHI编的程序打开它并解压到某一目录,怎么实现的?自己搞定了例子:winrar.exe e -y C:\WINDOWS\Desktop\ghost.rar d:\ 但新的问 ...

随机推荐

  1. [几何]计算不规则多边形的面积、中心、重心(Android,转)

    转自:[几何]计算不规则多边形的面积.中心.重心 最近项目用到:在不规则多边形的中心点加一个图标.(e.g: xx地区发生暴雪,暴雪区域是多边形,给多边形中心加一个暴雪的图标) 之前的设计是,计算不规 ...

  2. 【串线篇】MVC与SpringMVC

    1.二者区分 MVC: SpringMvc: DispatcherServlet(前端控制器名) 2.springmvc思想 Spring MVC 通过一套 MVC 注解,让 POJO成为处理请求的控 ...

  3. 安装cuDNN

    cuDNN cuDNN是GPU加速计算深层神经网络的库(下载链接,前文已提供). 本人的下载文件是:cudnn-7.0-linux-x64-v4.0-prod.tgz 在终端中切换到文件所在文件夹,输 ...

  4. testNG之异常测试

    @Test(expectedExceptions = ) 在测试的时候,某些用例的输入条件,预期结果是代码抛出异常,那么这个时候就需要testNG的异常测试,先看一段会抛出异常的代码 exceptio ...

  5. 升级ceph

    参考文档 https://blog.51cto.com/jerrymin/2140258 https://www.virtualtothecore.com/en/upgrade-ceph-cluste ...

  6. 存储过程中的in out in out 三种类型的参数

    in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变. out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程 in out 表示高参数可以 ...

  7. Android中通过进程注入技术修改系统返回的Mac地址

    致谢 感谢看雪论坛中的这位大神,分享了这个技术:http://bbs.pediy.com/showthread.php?t=186054,从这篇文章中学习到了很多内容,如果没有这篇好文章,我在研究的过 ...

  8. cent OS 7 下安装 python 3.6

    step1:安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readli ...

  9. Gym101158 J 三分 or 模拟退火 Cover the Polygon with Your Disk

    目录 Gym101158 J: 求圆与给定凸多边形最大面积交 模拟退火 三分套三分 模拟退火套路 @ Gym101158 J: 求圆与给定凸多边形最大面积交 传送门:点我点我 求 $10 $ 个点组成 ...

  10. 用processing画李萨如曲线

    李萨如曲线 有没有对示波器上变化曲线产生过兴趣,它叫做李萨如曲线: 数学上,利萨茹(Lissajous)曲线(又称利萨茹图形.李萨如图形或鲍迪奇(Bowditch)曲线)是两个沿着互相垂直方向的正弦振 ...