进行文件的上传下载的时候,常常会出现莫名其妙的错误,有的是直接在浏览器中直接打开,但是显示的是乱码,如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 |
||