下面是详细讲解“PHP实现文件上传和多文件上传”的完整攻略。
文件上传
文件上传是指将文件从客户端上传到服务器,PHP实现文件上传的步骤如下:
- 在前端页面添加文件上传表单,例如:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
其中,enctype="multipart/form-data"
代表表单中包含文件上传。
- 创建
upload.php
文件用于文件上传处理,代码如下:
<?php
if ($_FILES) {
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
if (file_exists($targetFile)) {
echo "文件已存在。";
$uploadOk = 0;
}
if ($_FILES["file"]["size"] > 500000) {
echo "文件过大。";
$uploadOk = 0;
}
if ($fileType != "jpg" && $fileType != "jpeg" && $fileType != "png" && $fileType != "gif") {
echo "文件类型不支持。";
$uploadOk = 0;
}
if ($uploadOk == 0) {
echo "文件上传失败。";
} else {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
echo "文件上传成功。";
} else {
echo "文件上传失败。";
}
}
}
?>
代码解析:
if ($_FILES)
判断是否有文件上传。$targetDir
为上传目录路径,可以设置为任意目录。$targetFile
为上传文件路径,由上传目录路径和上传文件名组成。$uploadOk
用于判断上传文件是否成功,初始为1,表示上传成功。$fileType
为上传文件类型,例如jpg、png等。file_exists()
函数判断上传文件是否已存在。$_FILES["file"]["size"]
为上传文件的大小,单位为字节。strtolower()
函数将文件后缀转化为小写字母。move_uploaded_file()
函数将上传文件移动到指定目录。
多文件上传
多文件上传是指一次性上传多个文件到服务器。与文件上传相比,多文件上传的处理方式有所不同,PHP实现多文件上传的步骤如下:
- 在前端页面添加多文件上传表单,例如:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file[]">
<input type="file" name="file[]">
<input type="submit" value="上传">
</form>
其中,name="file[]"
代表上传多个文件,每个文件的名称分别为file[0]
、file[1]
等。
- 创建
upload.php
文件用于多文件上传处理,代码如下:
<?php
if ($_FILES) {
$targetDir = "uploads/";
$uploadOk = 1;
for ($i = 0; $i < count($_FILES["file"]["name"]); $i++) {
$targetFile = $targetDir . basename($_FILES["file"]["name"][$i]);
$fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
if (file_exists($targetFile)) {
echo $_FILES["file"]["name"][$i] . " 文件已存在。";
$uploadOk = 0;
}
if ($_FILES["file"]["size"][$i] > 500000) {
echo $_FILES["file"]["name"][$i] . " 文件过大。";
$uploadOk = 0;
}
if ($fileType != "jpg" && $fileType != "jpeg" && $fileType != "png" && $fileType != "gif") {
echo $_FILES["file"]["name"][$i] . " 文件类型不支持。";
$uploadOk = 0;
}
if ($uploadOk == 0) {
echo $_FILES["file"]["name"][$i] . " 文件上传失败。";
} else {
if (move_uploaded_file($_FILES["file"]["tmp_name"][$i], $targetFile)) {
echo $_FILES["file"]["name"][$i] . " 文件上传成功。";
} else {
echo $_FILES["file"]["name"][$i] . " 文件上传失败。";
}
}
}
}
?>
代码解析:
for ($i = 0; $i < count($_FILES["file"]["name"]); $i++)
循环处理上传的多个文件。$_FILES["file"]["name"][$i]
为第$i个上传文件的名称。$targetFile
为当前上传文件的路径。$uploadOk
用于判断当前上传文件是否成功,初始为1,表示上传成功。
以上就是实现文件上传和多文件上传的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现文件上传和多文件上传 - Python技术站