zoukankan      html  css  js  c++  java
  • 上传文件格式控制的困惑(application/octet-stream 限制不了BAT等格式上传)问题解决

    允许上传类型部分代码
    $uptypes=array(  //上传文件类型列表
    'image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png','application/msword','application/vnd.ms-excel',
    'image/bmp','text/plain','application/octet-stream','image/x-png','application/x-shockwave-flash','audio/mpeg','audio/x-ms-wma',
    'application/x-zip-compressed'
    );

    判断文件类型部分
    if(!in_array($_FILES["upfile"]["type"], $uptypes))
    //检查文件类型
    {
    echo "<font color='red'>不能上传此类型文件!</font>";
    exit;
    }

          我的本意是想允许RAR这类文件上传,但做测试时,BAT,EXE等格式都可以上传,我测试了一下,这类文件的也是$_FILES["upfile"]["type"]是'application/octet-stream',所以就能上传了。

       目前我要想允许RAR上传,又能禁止BAT其它的格式文件上传怎么办?


    解决的代码:
    $uptypes=array(  //上传文件类型列表
    'gif', 'jpg','jpeg','png','doc','xls',
    'bmp','txt','rar','swf','mp3','wma',
    'zip'
    );
    $test=$_FILES["upfile"]["name"];
    function getFileExt($file_name)
    {
            while($dot = strpos($file_name, "."))
             {
                    $file_name = substr($file_name, $dot+1);
             }
            return $file_name;
    }
    $test1= strtolower(getFileExt($test));
    if(!in_array($test1, $uptypes))
    //检查文件类型
    {
    echo "<font color='red'>不能上传此类型文件!</font>";
    exit();
    }
    小结:直接检查文件的扩展名用$_FILES["upfile"]["name"];,而不是用这个$_FILES["upfile"]["type"];文件的类型来限制。

  • 相关阅读:
    【后缀数组】poj2406 Power Strings
    [HNOI 2013]游走
    [HAOI 2008]木棍分割
    [SCOI 2010]传送带
    [SDOI 2010]魔法猪学院
    [Codeforces 235B]Let's Play Osu!
    [SPOJ 10628]Count on a tree
    [ZJOI 2010]count 数字计数
    [SHOI 2008]Debt 循环的债务
    [JSOI 2008]星球大战starwar
  • 原文地址:https://www.cnblogs.com/wawahaha/p/4537537.html
Copyright © 2011-2022 走看看