当前位置:首页 > PHP

php实现文件上传

2026-02-27 10:23:27PHP

文件上传的基本实现

使用PHP实现文件上传需要处理HTML表单和服务器端脚本。HTML表单需要设置enctype="multipart/form-data"属性,PHP通过$_FILES超全局数组接收上传的文件。

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form>

PHP脚本中检查文件是否存在并处理上传:

$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    echo "The file has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
}

文件验证与安全措施

上传文件时需验证文件类型和大小,防止恶意文件上传。检查文件的MIME类型和扩展名是否合法。

$allowedTypes = ['image/jpeg', 'image/png'];
$fileType = $_FILES["fileToUpload"]["type"];

if (!in_array($fileType, $allowedTypes)) {
    die("Invalid file type.");
}

$maxFileSize = 2 * 1024 * 1024; // 2MB
if ($_FILES["fileToUpload"]["size"] > $maxFileSize) {
    die("File size exceeds the limit.");
}

生成唯一文件名避免冲突:

$fileExtension = pathinfo($_FILES["fileToUpload"]["name"], PATHINFO_EXTENSION);
$newFileName = uniqid() . '.' . $fileExtension;
$targetFile = $targetDir . $newFileName;

错误处理与反馈

检查上传过程中的错误代码,提供详细的错误反馈。

if ($_FILES["fileToUpload"]["error"] !== UPLOAD_ERR_OK) {
    switch ($_FILES["fileToUpload"]["error"]) {
        case UPLOAD_ERR_INI_SIZE:
            die("The uploaded file exceeds the upload_max_filesize directive in php.ini.");
        case UPLOAD_ERR_FORM_SIZE:
            die("The uploaded file exceeds the MAX_FILE_SIZE directive in the HTML form.");
        case UPLOAD_ERR_PARTIAL:
            die("The uploaded file was only partially uploaded.");
        case UPLOAD_ERR_NO_FILE:
            die("No file was uploaded.");
        case UPLOAD_ERR_NO_TMP_DIR:
            die("Missing a temporary folder.");
        case UPLOAD_ERR_CANT_WRITE:
            die("Failed to write file to disk.");
        case UPLOAD_ERR_EXTENSION:
            die("A PHP extension stopped the file upload.");
    }
}

多文件上传处理

支持同时上传多个文件,使用数组形式的文件输入名称。

<input type="file" name="filesToUpload[]" id="filesToUpload" multiple>

PHP脚本中遍历处理每个文件:

foreach ($_FILES["filesToUpload"]["tmp_name"] as $key => $tmpName) {
    $targetFile = $targetDir . basename($_FILES["filesToUpload"]["name"][$key]);
    if (move_uploaded_file($tmpName, $targetFile)) {
        echo "The file " . htmlspecialchars(basename($_FILES["filesToUpload"]["name"][$key])) . " has been uploaded.<br>";
    }
}

php实现文件上传

标签: 文件上传php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (H…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…