限制上传文件类型程序代码
我们一般不会在前段限制用户上传文件时的文件类,因为也没什么好的办法来限制只能使用像php,asp这类来操作,下面我来介绍利用js来定义type=file浏览上传时的文件类型与php中限制上传文件类型代码。
利用js
例1
<script> function check() { var filepath = path.value filepath = filepath.substring(filepath.lastIndexOf('.') + 1, filepath.length) if (filepath != 'jpg' && filepath != 'gif') alert("只能上传JPG或GIF格式的图片") } </script> <input type=file name=path onpropertychange="check()"> (只能上传JPG或GIF格式的图片)
例2
<script> function ck(obj) { if (obj.value.length > 0) { var af = "jpg,gif,png,zip,rar,txt,htm"; if (eval("with(obj.value)if(!/" + af.split(",").join("|") + "/ig.test(substring(lastIndexOf('.') +1,length)))1;")) { alert("Allowed file types:n" + af); obj.createTextRange().execCommand('delete') }; } } </script> <form> <input type=file name=path onpropertychange="ck(this)"/></form>
例3
/* * 判断图片类型 * * @param ths * type="file"的javascript对象 * @return true-符合要求,false-不符合 */ function checkImgType(ths) { if (ths.value == "") { alert("请上传图片"); return false; } else { if (!/.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(ths.value)) { alert("图片类型必须是.gif,jpeg,jpg,png中的一种"); ths.value = ""; return false; } } return true; }
如果是利用php,asp类的我们就不能像上面处理了需要如下
$name=$_FILES['file4']['name']; //获取客户端机器原文件的名称 $type=strstr($name,"."); //获取从"."到最后的字符 if($type!=".txt") { echo "对不起,您上传文件的格式不正确!!"; echo "<meta http-equiv="Refresh" content="3;url=index.php?lmbs=文件上传">将在3秒钟后返回前页..."; }
上面的方法说实话只能骗小朋友了,只要我们把上传文件的后缀名改一下就可能通过上面验证
稍加改进后这样就与文件后缀名无关了
$temppath=$upfile['tmp_name']; $fileinfo=pathinfo($upfile['name']); $extension=$upfile['type']; switch( $extension ) { case 'application/msword': $extension ='doc'; break; case 'application/vnd.ms-excel': $extension ='xls'; break; case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': $extension ='docx'; break; case 'application/vnd.ms-powerpoint': $extension ='ppt'; break; case 'application/pdf': $extension ='pdf'; break; case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': $extension ='xlsx'; break; default: die('只允许上传doc,docx,xls,pdf,ppt文件 <a href="wend.php">重新上传</a>'); }
id 后缀名 php识别出的文件类型
0 gif image/gif 1 jpg image/jpeg 2 png image/png 3 bmp image/bmp 4 psd application/octet-stream 5 ico image/x-icon 6 rar application/octet-stream 7 zip application/zip 8 7z application/octet-stream 9 exe application/octet-stream 10 avi video/avi 11 rmvb application/vnd.rn-realmedia-vbr 12 3gp application/octet-stream 13 flv application/octet-stream 14 mp3 audio/mpeg 15 wav audio/wav 16 krc application/octet-stream 17 lrc application/octet-stream 18 txt text/plain 19 doc application/msword 20 xls application/vnd.ms-excel 21 ppt application/vnd.ms-powerpoint 22 pdf application/pdf 23 chm application/octet-stream 24 mdb application/msaccess 25 sql application/octet-stream 26 con application/octet-stream 27 log text/plain 28 dat application/octet-stream 29 ini application/octet-stream 30 php application/octet-stream 31 html text/html 32 htm text/html 33 ttf application/octet-stream 34 fon application/octet-stream 35 js application/x-javascript 36 xml text/xml 37 dll application/octet-stream 38 dll application/octet-stream
本文地址:http://www.phprm.com/frame/php1005346.html
转载随意,但请附上文章地址:-)