加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

IE保存docx xlsx变成zip的问题

(2013-04-15 19:25:56)
分类: it技术
今天要在项目中加一个下载excel模板的小功能,我写了个controller,被领导发现了。领导说就一个模板,直接放到文件夹里不就得了么,你告诉我走controller有什么好处?我竟一时不知道说啥。后来想想通过controller无非就是可能加个权限吧。一个小模板,确实没什么必要。

于是直接关联文件资源。却发现下载下来的Excel竟然以zip格式保存。

原来:

IE下载docx(xlsx,pptx)扩展名的文件时,会自动将扩展名变为zip。
    当我们从IIS或者Tomcat之类的Web服务器通过二进制流下载dotx,docx,pot,xlsx,pptx等后缀的文件时,如果下载后变成zip格式的文件,那么是由于IE中对下载文件类型的判断,假如找不到相应后缀的MIME的话,会自动根据数据流来判断文件的类型,而微软对Office2007的格式做了和以前完全不同的处理。
    以前的Office文档是100%的二进制格式。第三方的工具操作起来非常不方便,而Office2007从整体上都是基于XML格式的,这里并不是说Office2007文档可以保存成XML格式。而是Office2007默认的文档格式就是XML的(Word的docx、Excel的xlsx等)。docx本质上是一个zip文件,里面有一系列的xml、目录和其他的文件。如果我们将docx改成zip。就可以用winzip等软件将其解开。正是由于这样的原因,当MIME中不存在相对应的Office2007类型的情况下,被自动识别为ZIP文件了。
 
  要解决该问题,是需要在Server端进行更改的,也就是说我们客户端的计算机并没有问题。
  
客户端解法方法:

打开IE9浏览器,点击"工具-Internet选项-安全-受信任的站点-自定义级别-其它-启用MIME探查(IE8:基于内容打开文件,而不是基于文件扩展名,如果IE是繁体:杂项-根据内容开启档案而不是根据副档名)",设定为"禁用"。(Open files based on content, not file extension)。

显然通过让客户去修改浏览器设置不太现实。

在tomcat的conf目录下的web.xml中的

 
       

   

下面添加:

"


        docx
        application/vnd.openxmlformats
   

  

 

即可.


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有