为什么每次保存表单时都会打印此错误消息?

时间:2014-09-25 19:40:06

标签: php forms

<?php 
if(isset($_FILES['menubg'])){
    $errors= array();
    $targetDir = $_SERVER['DOCUMENT_ROOT'].'/user/usermenu_background/'.($_SESSION['user_id']).'';

    // Create target dir
    if (!file_exists($targetDir)) {
        @mkdir($targetDir);
    }
        $file_name = 'menubg.jpg';
//      $file_name = $_FILES['menubg']['name'];
        $file_size =$_FILES['menubg']['size'];
        $file_tmp =$_FILES['menubg']['tmp_name'];
        $file_type=$_FILES['menubg']['type'];   
        $file_ext=strtolower(end(explode('.',$_FILES['menubg']['name'])));
        $extensions = array('jpg');         
        if(in_array($file_ext, $extensions) === false){
            $errors[]='extension not allowed, please choose a JPG file.'; 
        }
        if($file_size > 2097152){
            $errors[]='File size must be under 2 MB';
        }               
        if(empty($errors)==true){
            move_uploaded_file($file_tmp,'user/usermenu_background/'.($_SESSION['user_id']).'/'.$file_name);
            echo "No errors ";
        } else {
            print_r($errors);
        }
}
?>

出于某种原因,每次我保存表单时都会收到错误消息( 数组([0] =&gt;扩展名不允许,请选择JPG文件。))除非正在上传文件,否则不应打印。

当您上传文件时,应该检查以确保您上传的是.jpg文件。它被困在:if(isset($_FILES['menubg'])){}。在我的表单上,人们并不总是会上传文件,也不应该告诉我空白文件有不允许的扩展名。

1 个答案:

答案 0 :(得分:1)

您应该使用is_uploaded_file方法而不是isset

请在此处查看答案:How to check whether the user uploaded a file in PHP?