PHP |上传文件
你有没有想过网站是如何用PHP构建他们的文件上传系统的?下面我们就来了解一下文件上传的过程。您可以提出一个问题——“我们可以用这个系统上传任何类型的文件吗?”。答案是肯定的,我们可以上传具有不同类型扩展名的文件。
让我们制作一个用于将文件上传到服务器的 HTML 表单。
索引.html
File Upload Form
现在,是时候编写一个能够处理文件上传系统的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() 将文件从临时位置移动到服务器上所需的目录,我们就完成了。
输出