安装金山WPS2013造成的HTML5 file.type值异常

简介:

  处理代码的兼容性是前端攻城师们的家常便饭了,一般是对各种浏览器进行兼容性处理。但是有时候我们也会遭遇到浏览器以外的影响因素,这个是经常会被忽视掉的内容。比如前几天就听说客户端安装迅雷、暴风影音等软件会修改http连接数,从而影响浏览器的http并发数。今天有幸,让我见识了另一个因客户端安装个别软件而造成的程序兼容问题。罪魁祸首便是金山WPS2013.

  故事的开始是这样的。。。我用HTML5写了一个文件上传插件,其中使用到了file API,在验证文件类型的时候使用了file.type获取的文件MIME类型,如果获取的值在允许列表中,就让其通过验证。插件写完了,应用到了项目中,提交测试了,一切都很顺利。

  然后今天,一个测试MM却来找我,说文件上传功能不好使,明明选择了一个word文件,却提示“文件类型不允许”。刚开始我还不屑一顾,以为肯定是她的操作有问题,但是当我亲手试了一遍后,发现确确实实是有问题!一个普普通通的word文件而已,能有什么蹊跷?于是我顺着流程打印出来一些调试信息,发现了一个惊天大阴谋,在测试MM的机器上,获取到的这个word文件的MIME类型竟然是application/kswps。并不是doc文件正常的application/msword,或是docx文件的application/vnd.openxmlformats-officedocument.wordprocessingml.document。遂询问妹子的机器是不是安装了金山WPS,得到了肯定回答。从名字不难看出,文件的MIME类型被金山WPS给修改了(虽然给文件是用微软office创建的)。有图有真相:

未安装WPS,获取到的doc和docx文件的type都是正常的

 

安装WPS2013后,doc和docx文件的type都变成了application/kswps

  

  由于我的允许列表中没有这样的值,自然也就不能验证通过了。解决办法用脚趾头都能想出来,把这个application/kswps也加到允许列表中不就OK啦~正当我以为这就解决了问题准备卸载掉WPS时,谁知故事还没有结束。。。请看我卸载掉WPS后获取到的type值:

  没有了?没有了!变成空了!尼玛,金山你到底对我的电脑做了什么!拿不到type值了,那我还怎么验证。

  随后,我修改了文件类型验证方式,通过后缀名来检查,这样就不会受到MIME类型不一致的干扰了。问题虽然就此解决,但心中始终留有一丝对金山WPS的不解。另外,以上这种情况只出现在金山WPS目前的最新版9.1上,也就是WPS2013。我试着安装了8.1版本,是没有这个现象的。不知金山WPS是否会注意到此问题。


本文转自吕大豹博客园博客,原文链接:http://www.cnblogs.com/lvdabao/p/3246478.html,如需转载请自行联系原作者

相关文章
|
移动开发 前端开发 Android开发
前端html input =“file“ ios/安卓解决无法选择图库/拍照问题
前端html input =“file“ ios/安卓解决无法选择图库/拍照问题
2654 0
|
4月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
JavaScript 应用服务中间件 nginx
docker安装的nginx放在html文件下的vue项目404解决
docker安装的nginx放在html文件下的vue项目404解决
245 0
|
移动开发 前端开发 JavaScript
零基础HTML入门教程(2)——VSCode安装
前端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互 [1]。它从网页制作演变而来,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web1.0时代的产物,早期网站主要内容都是静态,以图片和文字为主,用户使用网站的行为也以浏览为主。随着互联网技术的发展和HTML5、CSS3的应用,现代网页更加美观,交互效果显著,功能更加强大。[2]
零基础HTML入门教程(2)——VSCode安装
|
前端开发 JavaScript
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
236 0
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
|
移动开发 前端开发 JavaScript
SublimeText 3汉化版安装教程和创建第一个HTML网页
SublimeText 3汉化版安装教程和创建第一个HTML网页
SublimeText 3汉化版安装教程和创建第一个HTML网页
|
JavaScript 前端开发 应用服务中间件
docker安装的nginx放在html文件下的vue项目404解决
docker安装的nginx放在html文件下的vue项目404解决
501 0
docker安装的nginx放在html文件下的vue项目404解决
|
XML JSON 移动开发
HTML5 input file,accept
accept表示可以上传文件类型,image表示图片,*表示所有支持的格式。在上传文件的时候,需要限制指定的文件类型。
171 0
|
前端开发
HTML之图像数据base64、object file之间的相互转换
HTML之图像数据base64、object file之间的相互转换