文件上传功能是项目中常用到的功能,可以上传几乎所有的文件。在这里,我们以上传图片举例。
在代码演示之前,我们先在根目录创建上传表单的HTML文件file.html以及接收处理上传文件信息的php文件upload.php,再在这两个文件的同级目录创建一个upload文件夹。
<html>
<head>
<meta charset="utf-8">
<title>上传图片</title>
</head>
<body>
<!-- action="upload.php":提交到upload.php文件 -->
<!-- method="post":提交方法是post -->
<!-- enctype="multipart/form-data":表明这是上传文件的类型,必须写 -->
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">图片名:</label>
<!-- 上传文件的表单 -->
<input type="file" name="img" id="img">
<!-- 提交表单 -->
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
// 将图片名分割成图片名称和后缀
$temp = explode(".", $_FILES["img"]["name"]);
// 获取文件后缀名
$extension = end($temp);
// 检测图片的类型,大小以及后缀名是否在$allowedExts的数组中
if ((($_FILES["img"]["type"] == "image/gif")
|| ($_FILES["img"]["type"] == "image/jpeg")
|| ($_FILES["img"]["type"] == "image/jpg")
|| ($_FILES["img"]["type"] == "image/pjpeg")
|| ($_FILES["img"]["type"] == "image/x-png")
|| ($_FILES["img"]["type"] == "image/png"))
&& ($_FILES["img"]["size"] < 204800) // 小于 200 kb
&& in_array($extension, $allowedExts))
{
if ($_FILES["img"]["error"] > 0)
{
// 如果有错误,就展示错误
echo "错误:: " . $_FILES["img"]["error"] . "<br>";
}
else
{
// 判断当前目录下的 upload 目录是否存在该图片
if (file_exists("upload/" . $_FILES["img"]["name"]))
{
// 如果存在了,就展示图片已经存在
echo $_FILES["img"]["name"] . "图片已经存在!";
}
else
{
// 如果 upload 目录不存在该图片则将图片上传到 upload 目录下
move_uploaded_file($_FILES["img"]["tmp_name"], "upload/" . $_FILES["img"]["name"]);
}
}
}
else
{
// 如果检测不是,就展示错误
echo "非法的文件格式";
}
?>