设置上传目录

$uploaddir = "./uploads/"; // 设置文件保存目录 注意包含/

确保指定的目录存在,并且 PHP 有权限在该目录下写入文件。

允许的文件类型

$allowed = array('jpg', 'jpeg', 'gif', 'png'); // 设置允许上传文件的类型

然后,您可以创建一个函数来检查文件类型是否允许:

function isImage($filename) {
    $fileExt = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    return in_array($fileExt, $allowed);
}

文件大小

上传文件的大小可以帮助防止服务器资源被过度使用。在 upload.php 文件中,您可以设置最大文件大小:

$maxsize = 2 * 1024 * 1024; // 2MB

然后,在处理文件上传时,检查文件大小:

if ($_FILES['userfile']['size'] > $maxsize) {
    die("文件过大,最大允许大小为 2MB");
}

处理文件上传

在 PHP 中,您可以使用 move_uploaded_file() 函数来处理文件上传。以下是一个完整的文件上传处理流程:

if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] == 0) {
    if (isImage($_FILES['userfile']['name'])) {
        $filename = $_FILES['userfile']['name'];
        $sourcePath = $_FILES['userfile']['tmp_name'];
        $targetPath = $uploaddir . $filename;

        if (move_uploaded_file($sourcePath, $targetPath)) {
            echo "文件上传成功: " . $targetPath;
        } else {
            echo "文件上传失败";
        }
    } else {
        echo "不支持的文件类型";
    }
} else {
    echo "文件未上传或上传错误";
}

高效处理技巧

  • 使用 $_FILES 数组来获取上传文件的相关信息。
  • 使用 move_uploaded_file() 函数来安全地移动上传的文件。
  • 使用 pathinfo() 函数来获取文件扩展名。
  • 使用 strtolower() 函数来确保文件类型的大小写一致。