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"];文件的类型来限制。

  • 相关阅读:
    Css颜色定义的方法汇总color属性设置方式
    关于css中的align-content属性详解
    关于char 指针变量char *=p;这个语句的输出问题
    事件绑定3
    事件绑定2
    事件绑定1
    XPath 初步讲解
    JSON初探
    CSS 媒体类型
    CSS Positioning(定位)
  • 原文地址:https://www.cnblogs.com/wawahaha/p/4537537.html
Copyright © 2011-2022 走看看