A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢辉林 中级黑马   /  2013-1-11 06:09  /  1500 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

平常在做上传文件的地方都要验证文件的扩展名,毕竟不能让用户上传.asp或者更危险的吧,一般这里的验证都是后端做的,但是这样会影响速度的,比 如用户上传一次就得提交一次,这样很是不利于用户体验,我们可以先验证前台用户这块,如果通过则交给后端,但是切记不可以后端不验证,因为这样的话可能被 黑客利用的哦。
说下JS验证上传文件的扩展名:
先在flie上添加“嫦娥”onchange事件,如:
<input type="file" name="file" id="file">
也可以使用Jquery的$().change()等绑定
然后看JS代码
  查看JS代码

function checkFileName(id) {
    var okText = /txt|jpg|xml|zip/i;//这里是允许的扩展名
     var filename = id.value;//得到当前file文件域的值
     var newFileName = filename.split('.'); //这是将文件名以点分开,因为后缀肯定是以点什么结尾的.
     newFileName = newFileName[newFileName.length-1];//这个是得到文件后缀,因为split后是一个数组所以最后的那个数组就是文件的后缀名.newFileName.length为当前的长度,-1则为后缀的位置,因为是从0开始的
     //开始检查后缀
     if (newFileName.search(okText) == -1) {//search如果没有刚返回-1.这个如果newFileName在okText里没有,则为不允许上传的类型. .
         var err=okText.toString();//将正则转为字符
         var errText=err.replace(/^\/|\/+(.*)/g,"");//用正则替换 / 开头和 /i结束
         var errText=errText.replace(/\|/g,",");//用正则把 | 替换成 ,
         alert("请上传为"+errText+"的文件");//提示
         return;
     }
    alert('扩展名通过审核');
}

评分

参与人数 1技术分 +1 收起 理由
舒远 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
前端验证只能对“老实”的用户做一个限制作用,后台还是必须做验证的哦。最好的是后台验证文件的MIME类型。才是真正的验证文件的类型,只通过文件扩展名是不够的哦。
回复 使用道具 举报
舒远 发表于 2013-1-11 08:58
前端验证只能对“老实”的用户做一个限制作用,后台还是必须做验证的哦。最好的是后台验证文件的MIME类型。 ...

恩 领教了:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马