今天公司上传了一个网站,里面有个页面有个点击下载docx的链接,可是客户端用IE点击下载的时候却成了.zip的文件,而且打不开:
google搜了一下说nginx不识别docx的扩展名,下面是原话:
导致原因:
从IIS或者Tomcat之类的Web服务器通过二进制流下载文件时(比如通过设置Header为Content-disposition:inline),如果被下载的文件是Office2007的dotx,docx,pot等后缀的时候,下载对话框中的图标会变成ZIP的,相应的文件名也会成为zip为扩展后缀的文件。其实出现这样的情况,是由于IE中对下载文件类型的判断,假如找不到相应后缀的MIME的话,会自动根据数据流来判断文件的类型,而微软对Office2007的格式做了和以前完全不同的处理。
以前的Office文档是100%的二进制格式。第三方的工具操作起来非常不方便,而 Office2007从整体上都是基于XML格式的,这里并不是说Office2007文档可以保存成XML格式。而是Office2007默认的文档格式就是XML的(Word的docx、Excel的xlsx等)。也许有人会感到奇怪,用文本编辑器打开docx后,显示的仍然是二进制格式,并不是什么 XML。其实docx并不是普通的XML格式,当然,也不只是一个XML文件,docx本质上是一个zip文件,里面有一系列的xml、目录和其他的文件。如果我们将docx改成zip。就可以用winzip等软件将其解开。
解决方法就是在/usr/local/nginx/conf/mime.types里添加docx的MIME对应就可以了:
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
保存退出重启nginx服务器就可以了。
再次下载就可以了:
附录:
下面收集了大部分文件的扩展名和相应的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,p_w_picpath/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,p_w_picpath/x-portable-bitmap
- .ief,p_w_picpath/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,p_w_picpath/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,p_w_picpath/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,p_w_picpath/x-rgb
- .ppm,p_w_picpath/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,p_w_picpath/x-cmx
- .jpeg,p_w_picpath/jpeg
- .dib,p_w_picpath/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,p_w_picpath/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,p_w_picpath/pjpeg
- .jpe,p_w_picpath/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,p_w_picpath/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,p_w_picpath/x-xbitmap
- .jpg,p_w_picpath/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,p_w_picpath/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,p_w_picpath/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,p_w_picpath/x-xpixmap
- .ico,p_w_picpath/x-icon
- .gif,p_w_picpath/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,p_w_picpath/x-xwindowdump
- .pgm,p_w_picpath/x-portable-graymap
- .bmp,p_w_picpath/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,p_w_picpath/vnd.wap.wbmp
- .png,p_w_picpath/png
- .pnz,p_w_picpath/png
- .smd,audio/x-smd
- .smz,audio/x-smd
- .smx,audio/x-smd
- .mmf,application/x-smaf
注:在nginx往mime.types里添加的时候应该按上面docx的写法写,比如第一个:
.asx,video/x-ms-asf
在nginx里应该写成video/x-ms-asf asx;
切记一定要这么写,否则会不能成功的
再贴一下tomcat的
IE下载Office2007文件时在下载对话框中变成ZIP文件问题的解决
在Server端添加MIME映射就可以了。如Tomcat , 修改/%tomcat_home%/conf/web.xml
- <mime-mapping>
- <extension>docx</extension>
- <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
- </mime-mapping>
- <mime-mapping>
- <extension>xlsx</extension>
- <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
- </mime-mapping>
- <mime-mapping>
- <extension>pptx</extension>
- <mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type>
- </mime-mapping>
转载于:https://blog.51cto.com/fantefei/922399