php多文件上传实现代码


下面是一个PHP多文件上传的简单实现示例。请注意,为了保持代码的简洁性,此示例不包括所有可能的安全检查(如文件大小限制、文件类型检查、错误处理等),这些在实际应用中是非常重要的。


<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['files'])) {
    // 检查是否有文件被上传
    if (!empty($_FILES['files']['name'][0])) {
        $targetDir = "uploads/"; // 指定上传目录
        $uploadOk = 1; // 初始化上传状态为成功

        // 遍历所有上传的文件
        for ($i = 0; $i < count($_FILES['files']['name']); $i++) {
            // 获取临时文件名和目标文件名
            $tmpFilePath = $_FILES['files']['tmp_name'][$i];
            $targetFilePath = $targetDir . basename($_FILES['files']['name'][$i]);

            // 尝试上传文件
            if (move_uploaded_file($tmpFilePath, $targetFilePath)) {
                echo "文件 " . htmlspecialchars(basename($_FILES["files"]["name"][$i])) . " 已被上传。<br>";
            } else {
                echo "上传文件 " . htmlspecialchars(basename($_FILES["files"]["name"][$i])) . " 时发生错误。<br>";
                $uploadOk = 0; // 如果有文件上传失败,设置上传状态为失败
            }
        }

        if ($uploadOk == 0) {
            echo "很遗憾,文件上传过程中有错误发生。";
        }
    }
}
?>

<!-- HTML 表单用于上传文件 -->
<form action="" method="post" enctype="multipart/form-data">
    选择文件上传(可多选):
    <input type="file" name="files[]" multiple>
    <input type="submit" value="上传文件" name="submit">
</form>

在这个示例中,我们创建了一个HTML表单,允许用户选择多个文件上传。表单的`enctype`属性被设置为`multipart/form-data`,这对于文件上传是必需的。PHP脚本首先检查请求方法是否为POST且`$_FILES['files']`数组是否已设置,然后遍历所有上传的文件,并使用`move_uploaded_file()`函数将文件从临时目录移动到指定的目标目录。如果文件上传成功,脚本将输出一条成功消息;如果发生错误,则输出一条错误消息。

请确保您的PHP环境已配置好适当的上传目录,并且该目录对PHP脚本是可写的。同时,出于安全考虑,您应该添加适当的文件类型检查和大小限制。