php限制上传文件类型程序代码

我们一般不会在前端限制用户上传文件时的文件类,因为也没什么好的办法来限制只能使用像php,asp这类来操作,下面我来介绍利用js来定义type=file浏览上传时的文件类型与php中限制上传文件类型代码.

利用js,例1代码如下:

  1. <script>
  2. function check(){
  3. var filepath=path.value
  4. filepath=filepath.substring(filepath.lastIndexOf('.')+1,filepath.length)
  5. if(filepath != 'jpg' && filepath != 'gif')
  6. alert("只能上传JPG或GIF格式的图片")
  7. }
  8. </script>
  9. <input type=file name=path onpropertychange="check()"> (只能上传JPG或GIF格式的图片)

例2,代码如下:

  1. <script>
  2. function ck(obj){if(obj.value.length>0){
  3. var af="jpg,gif,png,zip,rar,txt,htm";
  4. if(eval("with(obj.value)if(!/"+af.split(",").join("|")+"/ig.test(substring(lastIndexOf('.')
  5. +1,length)))1;")){alert("Allowed file types:n"+af);obj.createTextRange().execCommand('delete')};
  6. }}
  7. </script>
  8. <form>
  9. <input type=file name=path onpropertychange="ck(this)"/></form>

例3,代码如下:

  1. /*
  2. * 判断图片类型
  3. *
  4. * @param ths
  5. * type="file"的javascript对象
  6. * @return true-符合要求,false-不符合
  7. */
  8. function checkImgType(ths){
  9. if (ths.value == "") {
  10. alert("请上传图片");
  11. return false;
  12. } else {
  13. if (!/.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(ths.value)) {
  14. alert("图片类型必须是.gif,jpeg,jpg,png中的一种");
  15. //开源代码phpfensi.com
  16. ths.value = "";
  17. return false;
  18. }
  19. }
  20. return true;
  21. }

如果是利用php,asp类的我们就不能像上面处理了需要如下代码:

  1. $name=$_FILES['file4']['name']; //获取客户端机器原文件的名称
  2. $type=strstr($name,"."); //获取从"."到最后的字符 if($type!=".txt")
  3. { echo "对不起,您上传文件的格式不正确!!";
  4. echo "<meta http-equiv="Refresh" content="3;url=index.php?lmbs=文件上传">将在3秒钟后返回前页...";
  5. }

上面的方法说实话只能骗小朋友了,只要我们把上传文件的后缀名改一下就可能通过上面验证,稍加改进后这样就与文件后缀名无关了,代码如下:

  1. $temppath=$upfile['tmp_name'];
  2. $fileinfo=pathinfo($upfile['name']);
  3. $extension=$upfile['type'];
  4. switch( $extension )
  5. {
  6. case 'application/msword':
  7. $extension ='doc';
  8. break;
  9. case 'application/vnd.ms-excel':
  10. $extension ='xls';
  11. break;
  12. case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
  13. $extension ='docx';
  14. break;
  15. case 'application/vnd.ms-powerpoint':
  16. $extension ='ppt';
  17. break;
  18. case 'application/pdf':
  19. $extension ='pdf';
  20. break;
  21. case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':
  22. $extension ='xlsx';
  23. break;
  24. default:
  25. die('只允许上传doc,docx,xls,pdf,ppt文件 <a href="wend.php">重新上传</a>');
  26. }

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