进行文件的上传下载的时候,常常会出现莫名其妙的错误,有的是直接在浏览器中直接打开,但是显示的是乱码,如excel。有的是干脆就提示下载不了。用java生成这些文件的时候要写文件头的,如:response.setHeader(“”),今天查了下具体原因,做个记录.下面内容来自:http://www.cnblogs.com/heart-runner/archive/2011/11/25/2263582.html
- 现象
从IIS或者Tomcat、weblogic之类的Web服务器下载文件时(比如通过设置Header为Content-disposition:inline),如果被下载的文件是Office 2007文档(如后缀名为xlsx、docx、pptx等)时,下载对话框中的图标会变成ZIP。相应的文件名也会成用ZIP为扩展后缀的文件。
- 分析
出现这样的情况,是由于IE中对下载文件类型的判断错误造成的。根据IE设计,假如浏览器找不到相应后缀的MIME,它会自动根据数据流来判断文件的类型。
在Office2007中,微软对其文档的格式做了和以前完全不同的处理。 以前的Office文档是100%的二进制格式,第三方的工具操作起来非常不方便。 而Office 2007以后,Office文档整体上都是基于XML格式的。这里并不是说Office 2007文档可以保存成XML格式,而是Office2007默认的文档格式就是XML的(Word的docx、Excel的xlsx等)。也许有人会感到奇怪,用文本编辑器打开docx后,显示的仍然是二进制格式,为什么 XML?其实docx并不是普通的XML文件,docx本质上是一个ZIP文件,里面有一系列的XML、目录和其他的文件。如果我们将docx改成ZIP,就可以用winzip、7zip等软件将其解开。
正是由于这样的原因,当MIME中不存在相对应的Office 2007类型的情况下,文件会被IE自动识别为ZIP文件。
- 解决办法
解决的方法很简单,在Server端添加MIME映射就可以了。以Tomcat为例,可以在web.xml中找到<mime-mapping></mime-mapping>这样的定义,按照规则添加即可。如:
<web-app>
…
<mime-mapping>
<extension>.xlsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>
…
</web-app>
备注:
什么是MIME?
MIME(Multipurpose Internet Mail Extensions,多目的Internet邮件扩展)是创建用于电子邮件交换、网络文档、企业网和Internet上的其他应用程序中的文件格式规范。每个MIME格式包含一个MIME内容类型(”MIME type”)和指示存储在这个文件中的数据的子类型。MIME类型和子类型一般以类型/子类型的形式列出。MIME格式的内容广泛用于网络文档中。
- 附录
下表收集了大部分文件的扩展名和相应的MIME对应,如有需要,可以在列表中找到相应类型。
.asx |
video/x-ms-asf |
||
.xml |
text/xml |
||
.tsv |
text/tab-separated-values |
||
.ra |
audio/x-pn-realaudio |
||
.sv4crc |
application/x-sv4crc |
||
.spc |
application/x-pkcs7-certificates |
||
.pmc |
application/x-perfmon |
||
.lit |
application/x-ms-reader |
||
.crd |
application/x-mscardfile |
||
.isp |
application/x-internet-signup |
||
.wmlsc |
application/vnd.wap.wmlscriptc |
||
.vst |
application/vnd.visio |
||
.xlam |
application/vnd.ms-excel.addin.macroEnabled.12 |
||
.ttf |
application/octet-stream |
||
.pfm |
application/octet-stream |
||
.csv |
application/octet-stream |
||
.aaf |
application/octet-stream |
||
.one |
application/onenote |
||
.hta |
application/hta |
||
.atom |
application/atom+xml |
||
.323 |
text/h323 |
||
.mhtml |
message/rfc822 |
||
.midi |
audio/mid |
||
.p7r |
application/x-pkcs7-certreqresp |
||
.mny |
application/x-msmoney |
||
.clp |
application/x-msclip |
||
.vsd |
application/vnd.visio |
||
.lpk |
application/octet-stream |
||
.bin |
application/octet-stream |
||
.onetoc |
application/onenote |
||
.x |
application/directx |
||
.wvx |
video/x-ms-wvx |
||
.vcf |
text/x-vcard |
||
.htc |
text/x-component |
||
.htt |
text/webviewhtml |
||
.h |
text/plain |
||
.mht |
message/rfc822 |
||
.mid |
audio/mid |
||
.p7b |
application/x-pkcs7-certificates |
||
.gz |
application/x-gzip |
||
.dvi |
application/x-dvi |
||
.cpio |
application/x-cpio |
||
.vdx |
application/vnd.ms-visio.viewer |
||
.sldm |
application/vnd.ms-powerpoint.slide.macroEnabled.12 |
||
.xlm |
application/vnd.ms-excel |
||
.fdf |
application/vnd.fdf |
||
.setreg |
application/set-registration-initiation |
||
.eps |
application/postscript |
||
.p7s |
application/pkcs7-signature |
||
.toc |
application/octet-stream |
||
.mdp |
application/octet-stream |
||
.ics |
application/octet-stream |
||
.chm |
application/octet-stream |
||
.asi |
application/octet-stream |
||
.afm |
application/octet-stream |
||
.evy |
application/envoy |
||
.wmp |
video/x-ms-wmp |
||
.qt |
video/quicktime |
||
.mpv2 |
video/mpeg |
||
.xslt |
text/xml |
||
.etx |
text/x-setext |
||
.cod |
image/cis-cod |
||
.snd |
audio/basic |
||
.au |
audio/basic |
||
.man |
application/x-troff-man |
||
.qtl |
application/x-quicktimeplayer |
||
.pmw |
application/x-perfmon |
||
.class |
application/x-java-applet |
||
.iii |
application/x-iphone |
||
.csh |
application/x-csh |
||
.z |
application/x-compress |
||
.vtx |
application/vnd.visio |
||
.vsw |
application/vnd.visio |
||
.wps |
application/vnd.ms-works |
||
.potx |
application/vnd.openxmlformats-officedocument.presentationml.template |
||
.ps |
application/postscript |
||
.p7c |
application/pkcs7-mime |
||
.thn |
application/octet-stream |
||
.mso |
application/octet-stream |
||
.dot |
application/msword |
||
.doc |
application/msword |
||
.sgml |
text/sgml |
||
.nws |
message/rfc822 |
||
.pbm |
image/x-portable-bitmap |
||
.ief |
image/ief |
||
.wav |
audio/wav |
||
.texi |
application/x-texinfo |
||
.mvb |
application/x-msmediaview |
||
.hdf |
application/x-hdf |
||
.vsx |
application/vnd.visio |
||
.dotm |
application/vnd.ms-word.template.macroEnabled.12 |
||
.docm |
application/vnd.ms-word.document.macroEnabled.12 |
||
.pptx |
application/vnd.openxmlformats-officedocument.presentationml.presentation |
||
.psm |
application/octet-stream |
||
.java |
application/octet-stream |
||
.eot |
application/octet-stream |
||
.jar |
application/java-archive |
||
.mpeg |
video/mpeg |
||
.xsf |
text/xml |
||
.map |
text/plain |
||
.uls |
text/iuls |
||
.rf |
image/vnd.rn-realflash |
||
.m3u |
audio/x-mpegurl |
||
.wma |
audio/x-ms-wma |
||
.aifc |
audio/aiff |
||
.mdb |
application/x-msaccess |
||
.mvc |
application/x-miva-compiled |
||
.stl |
application/vnd.ms-pki.stl |
||
.ppsx |
application/vnd.openxmlformats-officedocument.presentationml.slideshow |
||
.xlsb |
application/vnd.ms-excel.sheet.binary.macroEnabled.12 |
||
.setpay |
application/set-payment-initiation |
||
.prm |
application/octet-stream |
||
.mix |
application/octet-stream |
||
.lzh |
application/octet-stream |
||
.hhk |
application/octet-stream |
||
.onepkg |
application/onenote |
||
.xaf |
x-world/x-vrml |
||
.flr |
x-world/x-vrml |
||
.IVF |
video/x-ivf |
||
.cnf |
text/plain |
||
.asm |
text/plain |
||
.tiff |
image/tiff |
||
.wax |
audio/x-ms-wax |
||
.ms |
application/x-troff-ms |
||
.tcl |
application/x-tcl |
||
.shar |
application/x-shar |
||
.sh |
application/x-sh |
||
.nc |
application/x-netcdf |
||
.hlp |
application/winhlp |
||
.oda |
application/oda |
||
.pfb |
application/octet-stream |
||
.fla |
application/octet-stream |
||
.wm |
video/x-ms-wm |
||
.rgb |
image/x-rgb |
||
.ppm |
image/x-portable-pixmap |
||
.ram |
audio/x-pn-realaudio |
||
.sit |
application/x-stuffit |
||
.dir |
application/x-director |
||
.mpp |
application/vnd.ms-project |
||
.xla |
application/vnd.ms-excel |
||
.ssm |
application/streamingmedia |
||
.axs |
application/olescript |
||
.ods |
application/oleobject |
||
.psp |
application/octet-stream |
||
.jpb |
application/octet-stream |
||
.wrz |
x-world/x-vrml |
||
.m1v |
video/mpeg |
||
.mno |
text/xml |
||
.cmx |
image/x-cmx |
||
.jpeg |
image/jpeg |
||
.dib |
image/bmp |
||
.rmi |
audio/mid |
||
.aiff |
audio/aiff |
||
.wmd |
application/x-ms-wmd |
||
.wri |
application/x-mswrite |
||
.pub |
application/x-mspublisher |
||
.ins |
application/x-internet-signup |
||
.wks |
application/vnd.ms-works |
||
.xls |
application/vnd.ms-excel |
||
.ai |
application/postscript |
||
.crl |
application/pkix-crl |
||
.qxd |
application/octet-stream |
||
.dwp |
application/octet-stream |
||
.xof |
x-world/x-vrml |
||
.wmv |
video/x-ms-wmv |
||
.nsc |
video/x-ms-asf |
||
.mpa |
video/mpeg |
||
.pnm |
image/x-portable-anymap |
||
.rpm |
audio/x-pn-realaudio-plugin |
||
.aif |
audio/x-aiff |
||
.me |
application/x-troff-me |
||
.pml |
application/x-perfmon |
||
.trm |
application/x-msterminal |
||
.m13 |
application/x-msmediaview |
||
.js |
application/x-javascript |
||
.dxr |
application/x-director |
||
.potm |
application/vnd.ms-powerpoint.template.macroEnabled.12 |
||
.xltx |
application/vnd.openxmlformats-officedocument.spreadsheetml.template |
||
.xlt |
application/vnd.ms-excel |
||
.xlc |
application/vnd.ms-excel |
||
.p10 |
application/pkcs10 |
||
.smi |
application/octet-stream |
||
.sea |
application/octet-stream |
||
.hqx |
application/mac-binhex40 |
||
.spl |
application/futuresplash |
||
.movie |
video/x-sgi-movie |
||
.lsf |
video/x-la-asf |
||
.txt |
text/plain |
||
.jfif |
image/pjpeg |
||
.jpe |
image/jpeg |
||
.zip |
application/x-zip-compressed |
||
.wmf |
application/x-msmetafile |
||
.m14 |
application/x-msmediaview |
||
.latex |
application/x-latex |
||
.wcm |
application/vnd.ms-works |
||
.pptm |
application/vnd.ms-powerpoint.presentation.macroEnabled.12 |
||
.xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
||
.hhp |
application/octet-stream |
||
.aca |
application/octet-stream |
||
.accdb |
application/msaccess |
||
.jcz |
application/liquidmotion |
||
.wrl |
x-world/x-vrml |
||
.wmx |
video/x-ms-wmx |
||
.asr |
video/x-ms-asf |
||
.lsx |
video/x-la-asf |
||
.xsl |
text/xml |
||
.html |
text/html |
||
.tif |
image/tiff |
||
.der |
application/x-x509-ca-cert |
||
.pfx |
application/x-pkcs12 |
||
.p12 |
application/x-pkcs12 |
||
.ppsm |
application/vnd.ms-powerpoint.slideshow.macroEnabled.12 |
||
.cur |
application/octet-stream |
||
.accdt |
application/msaccess |
||
.hdml |
text/x-hdml |
||
.htm |
text/html |
||
.xbm |
image/x-xbitmap |
||
.jpg |
image/jpeg |
||
.texinfo |
application/x-texinfo |
||
.ppam |
application/vnd.ms-powerpoint.addin.macroEnabled.12 |
||
.xlw |
application/vnd.ms-excel |
||
.rm |
application/vnd.rn-realmedia |
||
|
application/pdf |
||
.rar |
application/octet-stream |
||
.psd |
application/octet-stream |
||
.inf |
application/octet-stream |
||
.emz |
application/octet-stream |
||
.dsp |
application/octet-stream |
||
.onea |
application/onenote |
||
.jck |
application/liquidmotion |
||
.mpe |
video/mpeg |
||
.mp2 |
video/mpeg |
||
.sct |
text/scriptlet |
||
.ras |
image/x-cmu-raster |
||
.swf |
application/x-shockwave-flash |
||
.wmz |
application/x-ms-wmz |
||
.gtar |
application/x-gtar |
||
.dcr |
application/x-director |
||
.sldx |
application/vnd.openxmlformats-officedocument.presentationml.slide |
||
.pps |
application/vnd.ms-pps |
||
.p7m |
application/pkcs7-mime |
||
.xsn |
application/octet-stream |
||
.ocx |
application/octet-stream |
||
.accde |
application/msaccess |
||
.mov |
video/quicktime |
||
.wmls |
text/vnd.wap.wmlscript |
||
.cpp |
text/plain |
||
.c |
text/plain |
||
.bas |
text/plain |
||
.css |
text/css |
||
.art |
image/x-jg |
||
.mp3 |
audio/mpeg |
||
.t |
application/x-troff |
||
.roff |
application/x-troff |
||
.tar |
application/x-tar |
||
.hhc |
application/x-oleobject |
||
.scd |
application/x-msschedule |
||
.pko |
application/vnd.ms-pki.pko |
||
.sst |
application/vnd.ms-pki.certstore |
||
.ppt |
application/vnd.ms-powerpoint |
||
.xtp |
application/octet-stream |
||
.u32 |
application/octet-stream |
||
.pcx |
application/octet-stream |
||
.msi |
application/octet-stream |
||
.exe |
application/octet-stream |
||
.asd |
application/octet-stream |
||
.onetoc2 |
application/onenote |
||
.fif |
application/fractals |
||
.mpg |
video/mpeg |
||
.vml |
text/xml |
||
.xdr |
text/plain |
||
.vcs |
text/plain |
||
.hxt |
text/html |
||
.eml |
message/rfc822 |
||
.xpm |
image/x-xpixmap |
||
.ico |
image/x-icon |
||
.gif |
image/gif |
||
.dwf |
drawing/x-dwf |
||
.src |
application/x-wais-source |
||
.tr |
application/x-troff |
||
.pmr |
application/x-perfmon |
||
.pma |
application/x-perfmon |
||
.dll |
application/x-msdownload |
||
.bcpio |
application/x-bcpio |
||
.wmlc |
application/vnd.wap.wmlc |
||
.wdb |
application/vnd.ms-works |
||
.dotx |
application/vnd.openxmlformats-officedocument.wordprocessingml.template |
||
.docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
||
.pot |
application/vnd.ms-powerpoint |
||
.xltm |
application/vnd.ms-excel.template.macroEnabled.12 |
||
.rtf |
application/rtf |
||
.prf |
application/pics-rules |
||
.snp |
application/octet-stream |
||
.cab |
application/octet-stream |
||
.avi |
video/x-msvideo |
||
.asf |
video/x-ms-asf |
||
.dtd |
text/xml |
||
.wml |
text/vnd.wap.wml |
||
.vbs |
text/vbscript |
||
.rtx |
text/richtext |
||
.dlm |
text/dlm |
||
.xwd |
image/x-xwindowdump |
||
.pgm |
image/x-portable-graymap |
||
.bmp |
image/bmp |
||
.crt |
application/x-x509-ca-cert |
||
.ustar |
application/x-ustar |
||
.tex |
application/x-tex |
||
.sv4cpio |
application/x-sv4cpio |
||
.tgz |
application/x-compressed |
||
.cdf |
application/x-cdf |
||
.vss |
application/vnd.visio |
||
.cat |
application/vnd.ms-pki.seccat |
||
.thmx |
application/vnd.ms-officetheme |
||
.xlsm |
application/vnd.ms-excel.sheet.macroEnabled.12 |
||
.prx |
application/octet-stream |
||
.pcz |
application/octet-stream |
||
.onetmp |
application/onenote |
||
.acx |
application/internet-property-stream |
||
.wsdl |
text/xml |
||
.disco |
text/xml |
||
.xsd |
text/xml |
||
.wbmp |
image/vnd.wap.wbmp |
||
.png |
image/png |
||
.pnz |
image/png |
||
.smd |
audio/x-smd |
||
.smz |
audio/x-smd |
||
.smx |
audio/x-smd |
||
.mmf |
application/x-smaf |