web服务器下载文件失败

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

.pdf

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

 

 

张贴在未分类

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注