PHP实现文件上传和多文件上传

下面是详细讲解“PHP实现文件上传和多文件上传”的完整攻略。

下面是详细讲解“PHP实现文件上传和多文件上传”的完整攻略。

文件上传

文件上传是指将文件从客户端上传到服务器,PHP实现文件上传的步骤如下:

  1. 在前端页面添加文件上传表单,例如:
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
</form>

其中,enctype="multipart/form-data"代表表单中包含文件上传。

  1. 创建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实现多文件上传的步骤如下:

  1. 在前端页面添加多文件上传表单,例如:
<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]等。

  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实现文件上传和多文件上传

基础教程推荐