当前位置:首页 > PHP

php 实现文件上传

2026-01-30 07:03:15PHP

文件上传基础实现

使用PHP实现文件上传需要结合HTML表单和PHP的文件处理功能。以下是一个基础实现方法:

创建HTML表单(upload_form.html):

<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处理脚本(upload.php):

$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

// 检查文件是否已存在
if (file_exists($targetFile)) {
    echo "文件已存在";
    $uploadOk = 0;
}

// 限制文件大小(5MB)
if ($_FILES["fileToUpload"]["size"] > 5000000) {
    echo "文件太大";
    $uploadOk = 0;
}

// 允许特定文件格式
$allowedTypes = ["jpg", "png", "jpeg", "gif"];
if (!in_array($imageFileType, $allowedTypes)) {
    echo "只允许 JPG, JPEG, PNG & GIF 文件";
    $uploadOk = 0;
}

// 检查上传标志并移动文件
if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
        echo "文件上传成功";
    } else {
        echo "上传失败";
    }
}

安全增强措施

增加文件类型验证:

php 实现文件上传

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES["fileToUpload"]["tmp_name"]);
finfo_close($finfo);

$allowedMimes = ["image/jpeg", "image/png", "image/gif"];
if (!in_array($mime, $allowedMimes)) {
    die("无效的文件类型");
}

重命名上传文件防止覆盖:

$newFileName = uniqid() . '.' . $imageFileType;
$targetFile = $targetDir . $newFileName;

多文件上传实现

HTML表单修改:

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

PHP处理脚本修改:

php 实现文件上传

foreach ($_FILES["filesToUpload"]["tmp_name"] as $key => $tmpName) {
    $targetFile = $targetDir . basename($_FILES["filesToUpload"]["name"][$key]);
    move_uploaded_file($tmpName, $targetFile);
}

错误处理与调试

检查上传错误代码:

if ($_FILES["fileToUpload"]["error"] !== UPLOAD_ERR_OK) {
    switch ($_FILES["fileToUpload"]["error"]) {
        case UPLOAD_ERR_INI_SIZE:
            echo "文件超过服务器限制";
            break;
        case UPLOAD_ERR_FORM_SIZE:
            echo "文件超过表单限制";
            break;
        // 其他错误处理...
    }
}

服务器配置注意事项

确保php.ini中相关设置正确:

file_uploads = On
upload_max_filesize = 20M
post_max_size = 21M
max_file_uploads = 20

创建上传目录并设置权限:

if (!file_exists($targetDir)) {
    mkdir($targetDir, 0755, true);
}

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

相关文章

php实现搜索功能

php实现搜索功能

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

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…