下面我将详细介绍如何使用PHP实现文件上传功能,并带有两个实例说明。
文件上传功能指的是将本地文件传输到服务器的过程,通常用于网站用户上传图片、文档等文件。
创建上传表单:在HTML表单中用input标签指定type="file",使得用户可以选择本地文件并提交上传。
处理上传文件:在PHP中用$_FILES数组接收上传的文件,可以使用move_uploaded_file函数将上传的文件写入服务器中的指定路径。
处理上传过程中可能出现的错误:例如文件太大、文件类型不符等。在PHP中可以使用$_FILES数组中的error属性得到具体的错误类型。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传示例1</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="upload.php">
<label for="file">上传文件:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="上传">
</form>
</body>
</html>
<?php
if ($_FILES["file"]["error"] > 0){
echo "文件上传出错:".$_FILES["file"]["error"];
} else{
echo "文件名:" . $_FILES["file"]["name"] . "<br>";
echo "文件类型:" . $_FILES["file"]["type"] . "<br>";
echo "文件大小:" . ($_FILES["file"]["size"] / 1024) . " KB<br>";
echo "文件临时路径:" . $_FILES["file"]["tmp_name"] . "<br>";
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
echo "文件上传成功!";
}
?>
以上代码实现了一个简单的单文件上传功能。上传表单中只有一个file类型的input标签,用户选择完文件后,提交到upload.php文件中进行处理。如果上传过程中没有错误,则会显示上传的文件名、类型、大小以及临时路径;同时将临时路径下的文件移动到服务器端指定的目录uploads中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传示例2</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="upload.php">
<label for="file">上传文件:</label>
<input type="file" name="file[]" id="file" multiple><br>
<input type="submit" name="submit" value="上传">
</form>
</body>
</html>
<?php
if (isset($_FILES["file"])){
$error = $_FILES["file"]["error"];
for ($i=0; $i < count($_FILES["file"]["name"]); $i++) {
if ($error[$i] > 0){
echo "第".($i+1)."个文件上传出错:".$error[$i];
} else{
echo "文件名:" . $_FILES["file"]["name"][$i] . "<br>";
echo "文件类型:" . $_FILES["file"]["type"][$i] . "<br>";
echo "文件大小:" . ($_FILES["file"]["size"][$i] / 1024) . " KB<br>";
echo "文件临时路径:" . $_FILES["file"]["tmp_name"][$i] . "<br>";
move_uploaded_file($_FILES["file"]["tmp_name"][$i], "uploads/" . $_FILES["file"]["name"][$i]);
echo "第".($i+1)."个文件上传成功!<br>";
}
}
}
?>
以上代码实现了一个多文件上传功能。上传表单中的file类型的input标签带有multiple属性,使得可以选择多个文件进行上传。在PHP中对$_FILES数组进行循环操作,处理每一个文件的上传过程。如果上传过程中没有错误,则会显示每个文件的名称、类型、大小以及临时路径;同时将临时路径下的文件移动到服务器端指定的目录uploads中。
这两个示例代码可以在本地服务器中测试运行,只需要在本地建立一个uploads文件夹作为保存上传文件的目录即可。