// 截取文件名称中的扩展名
// 例如 index.html 1.jpg
// 扩展名是 html jpg
// 友情提示:为什么不要点
// 截取扩展名,往往是为了做验证判断
// 验证扩展名是否符合规定的规范
// 例如上传图片,往往限制图片类型是 jpg的图片
// 实现的方法,就是截取上传文件的扩展名,判断是否是规定的扩展名
// 如果包括 点,实际上这个验证的第一位是无意义的验证
// 为了提高验证效率,往往是不需要这个点的
// 如何获取扩展名
// 方法有很多,掌握一个就够了
// 正常人的方法
// 例如文件名是 abc.def.hig.jpg 文件命中也可以包含点
// 实际上扩展名是 最后一个点之后的内容
// 确定最后一个点: lastIndexOf()
// var fileName = '123.456.789.png';
// 1,获取最后一个点的索引下标
// var num = fileName.lastIndexOf('.');
// 2,实际截取,不需要点,需要的是,点下一个位置开始截取
// 在当前num基础上+1 是下一个字符的索引
// 也就是扩展名第一个字符的索引
// num = num+1;
// 3,从这个字符开始,截取到文件名最后一个字符
// 从第一个扩展名位置的索引下标开始截取,截取至文件名的最后一个字符
// substr 和 substring 都可以
// var ext = fileName.substr(num);
// 可以将上述代码写成一行
var fileName = '123.456.789.png';
var ext = fileName.substr(fileName.lastIndexOf('.')+1);
console.log(ext);
// 方法2,
// 将字符串按照 点 间隔,转化为数组
// 数组前面的单元不管,最后一个单元,一定存储的是扩展名
// 使用 pop() 方法,删除 数组的最后一个单元
// 返回值就是删除单元存储的数据,也就是扩展名
var fileName = '123.456.789.png';
// 将字符串,按照点分割为数组,最后一个单元,存储的是扩展名
var arr = fileName.split('.');
// 使用pop方法,删除最后一个单元,执行结果,就是删除单元存储的数据,也就是扩展名
var ext = arr.pop();
console.log(ext);
// 将规定的字符串类型,写成一个数组
// 可以判断扩展名是否是数组的数据
// 然后可以判断,扩展名是否是数组的数据
// 如果是,证明扩展名符合规范,如果不是,扩展名是不符合规范的
// indexOf()查询,如果返回值是 -1 证明扩展名不是数组的数据,就不符合规范
var fileName = '123.456.789.JPG';
// 获取扩展名
var ext = fileName.substr( fileName.lastIndexOf('.') +1 );
// 统一大小写
ext = ext.toLowerCase();
// 模拟定义一个数组,存储符合规范的扩展名
// 要求必须是图片
// 这个数组,实际上一般是数据库查询的结果
var fileExtArr = ['jpg' , 'jpeg' , 'png' , 'gif'];
// 验证判断,扩展名是否是数组的数据
if(fileExtArr.indexOf(ext) === -1 ){
// 如果查询结果是 -1 证明 数组中没有这个数据,证明扩展名不符合规范的
window.alert('您上传文件,不符合规范,请您重新选择文件');
}else{
window.alert('您上传文件,符合规范');
}