安装金山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是否会注意到此问题。
安装金山WPS2013造成的HTML5 file.type值异常的更多相关文章
- 原生HTML5 input type=file按钮UI自定义
原生<input type="file" name="file" />长得太丑 提升一下颜值 实现方案一.设置input[type=file]透明度 ...
- HTML5 File api 实现断点续传
目前市场上大多数的网站的断点上传都是需要安装浏览器插件的,本文就针对高级浏览器的环境下,通过HTML5 File api实现断点上传进行说明 一.实现文件多选 HTML5的<input>新 ...
- HTML5 File API — 让前端操作文件变的可能
前言 在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现.出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成 ...
- File Type Icons – 免费扁平设计风格文件类型图标集
这套扁平风格图标集包含一组62个不同的文件类型图标,有 AI,ICO和 PNG 三种格式.他们采用长阴影模式的扁平化设计,看起来非常整齐和现代化.这些图标是完全免费的,可以用于商业项目. 您可能感兴趣 ...
- 【转发】Html5 File Upload with Progress
Html5 File Upload with Progress Posted by Shiv Kumar on 25th September, 2010Senior Sof ...
- 初识html5 File API实现带有进度提示的文件上传
Html5终于解决了上传文件的同时显示文件上传进度的老问题.现在大部分的网站用Flash去实现这一功能,还有一些网站继续采用Html <form>with enctype=multipar ...
- 简单的html5 File base64 图片上传
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- HTML5 file api读取文件的MD5码工具
1.工具的用途:用HTML5 file api读取文件的MD5码.MD5码在文件的唯一性识别上有很重要的应用,业内常用MD5进行文件识别.文件秒传.文件安全性检查等: 2.适用性:IE.Chrome皆 ...
- HTML5 File接口(在web页面上使用文件)
File接口提供了与文件相关的信息,并且运行JavaScript在web页面上去访问文件中的内容. File对象来自于用户使用input标签选择文件返回的FileList对象,来自于拖放操作的Data ...
随机推荐
- 123. Best Time to Buy and Sell Stock (三) leetcode解题笔记
123. Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the pric ...
- hibernate常用关联
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns=" ...
- redis的 rdb 和 aof 持久化的区别 [转]
aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...
- vi
e! 放弃所有修改,从上次保存文件开始再编辑 shift+g 最后一行 gg 第一行 u 恢复上一次操作 如果查找下一个,按"n"即可. set nu 显示行号 编辑模式下111g ...
- SqlBulkCopy 从bcp客户端收到一个对 colid 1 无效的列长度。
出现这个错误,大家都知道是因为字段长度超出了,但是这里需要注意的是,colid 1指的是数据库表的第1列,而不是C#中DataTable的第1列. 比如C#中DataTable的列顺序为{" ...
- MongoDB GridFS 对图片进行增删改
using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; using MongoDB.Driver.GridFS ...
- 京东2017校园招聘笔试题 【第K个幸运数】
题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第 ...
- OD使用教程11
首先把安装好的软件拖入PEID,看看它是用什么语言写的 然后用OD载入程序,查找关键字,步骤看上一个笔记 双击到达代码处,发现这在一个跳转里面.可能第一反应是修改跳转,经试验后发现这是没用的所以 ...
- Qt 如何判断文件是不是一个目录
做个文件管理系统的时候碰到的question,下面来讲解下方法,因为在网上都没找到,就只能翻官方文档相关信息结果找到isFile(),isDir(); 因为是文件管理系统,那么肯定现先获取到它的路径以 ...
- MySQL执行计划解读
Explain语法 EXPLAIN SELECT …… 变体: 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得 ...