当前位置:首页 > PHP

php 实现文件上传

2026-03-13 03:49:58PHP

文件上传基础实现

创建一个包含文件上传表单的HTML页面,表单需设置enctype="multipart/form-data"属性:

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

处理上传的PHP脚本

upload.php中处理上传逻辑,检查文件是否存在错误并移动到目标目录:

php 实现文件上传

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

if ($_FILES["fileToUpload"]["error"] !== UPLOAD_ERR_OK) {
    $uploadOk = 0;
}

if ($uploadOk && move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    echo "File uploaded successfully.";
} else {
    echo "Error uploading file.";
}

安全增强措施

验证文件类型和大小,防止恶意文件上传:

$allowedTypes = ["image/jpeg", "image/png"];
$maxSize = 2 * 1024 * 1024; // 2MB

if (!in_array($_FILES["fileToUpload"]["type"], $allowedTypes)) {
    $uploadOk = 0;
}

if ($_FILES["fileToUpload"]["size"] > $maxSize) {
    $uploadOk = 0;
}

文件重命名策略

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

php 实现文件上传

$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:
            echo "File exceeds server limit.";
            break;
        case UPLOAD_ERR_FORM_SIZE:
            echo "File exceeds form limit.";
            break;
        // 其他错误情况...
    }
}

完整示例代码

结合所有安全措施的完整上传处理脚本:

$targetDir = "uploads/";
$allowedTypes = ["image/jpeg", "image/png"];
$maxSize = 2 * 1024 * 1024;

if ($_FILES["fileToUpload"]["error"] !== UPLOAD_ERR_OK) {
    die("Upload error occurred.");
}

if (!in_array($_FILES["fileToUpload"]["type"], $allowedTypes)) {
    die("Invalid file type.");
}

if ($_FILES["fileToUpload"]["size"] > $maxSize) {
    die("File too large.");
}

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

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    echo "Upload successful. File saved as: " . htmlspecialchars($newFileName);
} else {
    echo "Error saving file.";
}

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

相关文章

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php实现的分页

php实现的分页

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

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…