📜  PHP |上传文件

📅  最后修改于: 2022-05-13 01:57:39.932000             🧑  作者: Mango

PHP |上传文件

你有没有想过网站是如何用PHP构建他们的文件上传系统的?下面我们就来了解一下文件上传的过程。您可以提出一个问题——“我们可以用这个系统上传任何类型的文件吗?”。答案是肯定的,我们可以上传具有不同类型扩展名的文件。
让我们制作一个用于将文件上传到服务器的 HTML 表单。
索引.html




    
    File Upload Form


    
             

Upload File

                                             

Note:Only .jpg, .jpeg, .png formats allowed to a max size of 2MB.

    

现在,是时候编写一个能够处理文件上传系统的PHP脚本了。
文件上传管理器。 PHP

 "image/jpg", 
                            "jpeg" => "image/jpeg", 
                             "gif" => "image/gif",
                             "png" => "image/png");
        $file_name = $_FILES["photo"]["name"];
        $file_type = $_FILES["photo"]["type"];
        $file_size = $_FILES["photo"]["size"];
      
        // Verify file extension
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
  
        if (!array_key_exists($ext, $allowed_ext))         
            die("Error: Please select a valid file format.");
          
        // Verify file size - 2MB max
        $maxsize = 2 * 1024 * 1024;
  
        if ($file_size > $maxsize)         
            die("Error: File size is larger than the allowed limit.");        
      
        // Verify MYME type of the file
        if (in_array($file_type, $allowed_ext))
        {
            // Check whether file exists before uploading it
            if (file_exists("upload/".$_FILES["photo"]["name"]))            
                echo $_FILES["photo"]["name"]." is already exists.";
              
            else
            {
                move_uploaded_file($_FILES["photo"]["tmp_name"],  
                           "uploads/".$_FILES["photo"]["name"]);
                echo "Your file was uploaded successfully.";
            } 
        } 
        else
        {
            echo "Error: Please try again."; 
        }
    } 
    else
    {
        echo "Error: ". $_FILES["photo"]["error"];
    }
}
?>

在上面的脚本中,一旦我们提交了表单,稍后我们就可以通过一个PHP超全局关联数组 $_FILES 访问信息。除了使用 $_FILES 数组的形式外,许多内置函数都发挥着重要作用。完成上传文件后,在脚本中我们将检查服务器的请求方法,如果是 POST 则继续,否则系统将抛出错误。稍后,我们访问了 $_FILES 数组以获取文件名、文件大小和文件类型。一旦我们获得了这些信息,我们就会验证文件的大小和类型。最后,我们在要上传文件的文件夹中搜索,检查文件是否已经存在。如果没有,我们已经使用 move_uploaded_file() 将文件从临时位置移动到服务器上所需的目录,我们就完成了。
输出