以前一直基于IE编程,总觉得在客户端校验文件要么需要降低浏览器的安全性限制,要么必须将文件上传到服务器进行校验,今天又遇到小组成员问同样的问题,于是查阅了一番MDN,才发现DOM File API已经进步得非常强大了。
假定页面的文件上传元素如下:
<input type="file" id="aFile"/>
校验上传文件的大小方法如下:
// 获取到文件上传元素
var aFileDom = document.querySelector('#aFile');
// 解析上传的文件,得到File对象
var aFile = aFileDom.files[0];
// 获取文件的大小
var size = aFile.size; // 返回以字节数量
// 甚至可以判断文件的类型,不是总是有效,遇到无法识别的后缀,可能会返回空字符串
var type = aFile.type; // 返回文件类型,如video/x-ms-wmv
需要注意的是,获取File对象不能通过value属性,那样只会返回代表文件全路径的字符串。
附浏览器的兼容性:
Chrome | Internet Explorer | Firefox |
---|---|---|
13+ | 10+ | 7+ |