PHP上传文件web表单


PHP upload file web form

我试图创建一个表单,让访问者上传图像文件。我一直在使用下面的代码,但一直收到"not set"错误,好像$_FILES['image']没有拾取图像文件。

有人能看到这里有错误吗?

形式代码:

<h1>Contact form test</h1>
<form action="php/form.php" method="post">
  First name:<br>
  <input type="text" name="firstname" required><br>
  Last name:<br>
  <input type="text" name="lastname" required><br>
  <p>
      <input type="file" name="image" id="image" enctype="multipart/form-data"><br>
  </p>
  <input type="submit" value="Submit"> 
</form>
php代码:

// Set variables
$firstname = secure($_POST['firstname']);
$lastname = secure($_POST['lastname']);
// Form Security
function secure($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
// File upload
if(isset($_FILES['image'])){
    $errors= array();
    $file_name = $_FILES['image']['name'];
    $file_size = $_FILES['image']['size'];
    $file_tmp = $_FILES['image']['tmp_name'];
    $file_type = $_FILES['image']['type'];
    $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));       
    $extensions= array("jpeg","jpg","png");          
    if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }          
      if($file_size > 2097152){
         $errors[]='File size must be exactly 2 MB';
      }          
      if(empty($errors)==true){
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
}else{
    echo "not set";
}

use enctype="multipart/form-data" in form tag

<form action="php/form.php" method="post" enctype="multipart/form-data">
  First name:<br>
  <input type="text" name="firstname" required><br>
  Last name:<br>
  <input type="text" name="lastname" required><br>
    <p>
    <input type="file" name="image" id="image" enctype="multipart/form-data">
    <br>
  </p>
  <input type="submit" value="Submit">
</form>

参考:http://php.net/manual/en/features.file-upload.post-method.php

put enctype="multipart/form-data " in form tag

只有adds a multipart attribute for form tag,如果您想使用表单上传文件,这是必要的。enctype attribute指定表单数据在提交给服务器时应该如何编码。

<form action="demo_post_enctype.asp" method="post" enctype="multipart/form-data">
//you code here
</form>

同样,enctype attribute只能在method="post" .

时使用。