2017-04-20 105 views
0

我有一个字段,它不需要它的图像上传..问题是,如果用户不添加图像,它仍然添加重命名图像没有外部。空字段仍在发送信息

所以基本上它把一个名字在数据库

 if (isset($_POST['submit'])) { 

     $Name = $_POST['name']; 
     $Description = $_POST['description']; 

     $file = $_FILES['photo']['name']; 
     $ext = pathinfo($file, PATHINFO_EXTENSION); 
     $rename_image = generate_random(12); 
     $file_loc = $_FILES['photo']['tmp_name']; 
     $file_type = $_FILES['photo']['type']; 
     $file_size = $_FILES['photo']['size']; 
     $newFilename = $rename_image . '.' . $ext; 
     $folder = "../uploads/"; 

     if (empty($Name)) { 
      $errors[] = "Name Required."; 
     } 

     if (!empty($_FILES['photo']['name'])) { 
     } 

     if (($file_size > 2097152)) { 

      echo validation_errors("Your avatar exceeds file size"); 
     } elseif (($file_type != "image/jpeg") && ($file_type != "image/jpg") && ($file_type != "image/gif") && ($file_type != "image/png")) { 

      echo validation_errors("Invalid image format.");  


     if (!empty($errors)) { 
      echo validation_errors($errors[0]); 

     } else { 

     move_uploaded_file($file_loc, $folder.$newFilename); 

     $db = dbconnect(); 
     $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
     $stmt->bind_param('sss', $Name, $Description, $newFilename); 
     $stmt->execute();   
     $stmt->close(); 

     header("Location: managecategories.php"); 

    } 
    } 
} 

回答

0

检查文件是否存在,或使用file_exists或/和is_uploaded_file功能上传。

if(file_exists($_FILES['photo']['tmp_name']) || is_uploaded_file($_FILES['photo']['tmp_name']) { 
    $file = $_FILES['photo']['name']; 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    $rename_image = generate_random(12); 
    $file_loc = $_FILES['photo']['tmp_name']; 
    $file_type = $_FILES['photo']['type']; 
    $file_size = $_FILES['photo']['size']; 
    $newFilename = $rename_image. 
    '.'.$ext; 
    $folder = "../uploads/"; 

    if (($file_size > 2097152)) { 
     echo validation_errors("Your avatar exceeds file size"); 
    } 
    else if(($file_type != "image/jpeg") && ($file_type != "image/jpg") && ($file_type != "image/gif") && ($file_type != "image/png")) { 
     echo validation_errors("Invalid image format."); 
    } 
    else { 
     move_uploaded_file($file_loc, $folder.$newFilename); 
    } 
} 
+0

我并不需要检查文件是否存在,如果该字段为空我需要它不是产生一个名称并将其插入 – Case

+0

然后,我们需要表单代码... – Oen44

1

检查参数变量是否在使用之前设置。

if (!empty($_FILES['photo']['name'])) { 
    $file = $_FILES['photo']['name']; 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    $rename_image = generate_random(12); 
    $file_loc = $_FILES['photo']['tmp_name']; 
    $file_type = $_FILES['photo']['type']; 
    $file_size = $_FILES['photo']['size']; 
    $newFilename = $rename_image . '.' . $ext; 
    $folder = "../uploads/"; 

    if (empty($Name)) { 
     $errors[] = "Name Required."; 
    } 

    if (($file_size > 2097152)) { 

     echo validation_errors("Your avatar exceeds file size"); 
    } elseif (($file_type != "image/jpeg") && ($file_type != "image/jpg") && ($file_type != "image/gif") && ($file_type != "image/png")) { 

     echo validation_errors("Invalid image format.");  


    if (!empty($errors)) { 
     echo validation_errors($errors[0]); 

    } else { 

    move_uploaded_file($file_loc, $folder.$newFilename); 

    $db = dbconnect(); 
    $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
    $stmt->bind_param('sss', $Name, $Description, $newFilename); 
    $stmt->execute();   
    $stmt->close(); 

    header("Location: managecategories.php"); 
} 
+0

我修改了代码,但它仍然发送这个数据库LV8UIYKNOXU9。当没有图像被选中时。但与选择的图像作品完美 – Case

+0

'var_dump($ _ FILES ['photo'])'显示什么? – Barmar

+0

您在移动文件的代码周围没有'if'。 – Barmar