• 技术文章 >php教程 >php手册

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

    2016-06-13 11:27:32原创313
    我们一般不会在前段限制用户上传文件时的文件类,因为也没什么好的办法来限制只能使用像php,asp这类来操作,下面我来介绍利用js来定义type=file浏览上传时的文件类型与php中限制上传文件类型代码。

    利用js

    例1

    代码如下 复制代码

    (只能上传JPG或GIF格式的图片)

    例2

    代码如下 复制代码



    例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 "将在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文件 重新上传');

    }

    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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP多文件上传理解总结 下一篇:PHP中利用APC模块实现文件上传进度条
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• php的array_multisort()使用方法介绍_php基础• 不用数据库的多用户文件自由上传投票系统(1)_php基础• 基于php实现七牛抓取远程图片• php多文件上传数组 转换,• Apache服务器配置全攻略(六)
    1/1

    PHP中文网