文件上传 #

一、HTML表单 #

html
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">上传</button>
</form>

二、处理上传 #

2.1 $_FILES数组 #

php
<?php
$file = $_FILES['file'];

echo $file['name'];
echo $file['type'];
echo $file['tmp_name'];
echo $file['error'];
echo $file['size'];

2.2 移动上传文件 #

php
<?php
$tmpName = $_FILES['file']['tmp_name'];
$destination = 'uploads/' . $_FILES['file']['name'];

if (move_uploaded_file($tmpName, $destination)) {
    echo "上传成功";
}

三、验证上传 #

php
<?php
function validateUpload(array $file, array $allowedTypes, int $maxSize): bool
{
    if ($file['error'] !== UPLOAD_ERR_OK) {
        return false;
    }
    
    if ($file['size'] > $maxSize) {
        return false;
    }
    
    $type = mime_content_type($file['tmp_name']);
    if (!in_array($type, $allowedTypes)) {
        return false;
    }
    
    return true;
}

四、多文件上传 #

php
<?php
foreach ($_FILES['files']['name'] as $key => $name) {
    $tmpName = $_FILES['files']['tmp_name'][$key];
    move_uploaded_file($tmpName, 'uploads/' . $name);
}

五、总结 #

本章学习了文件上传的实现,下一章将学习目录操作。

最后更新:2026-03-26