当前位置:首页 > PHP

php附件功能实现

2026-02-16 19:16:53PHP

PHP 实现文件上传功能

创建 HTML 表单用于文件上传

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

处理文件上传的 PHP 代码

基本文件上传处理脚本

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

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

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

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

// 检查上传状态
if ($uploadOk == 0) {
    echo "文件未上传";
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
        echo "文件 ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " 已上传";
    } else {
        echo "上传过程中出现错误";
    }
}
?>

安全增强措施

验证文件类型和内容

$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
    echo "文件是有效的图片 - " . $check["mime"] . ".";
    $uploadOk = 1;
} else {
    echo "文件不是图片";
    $uploadOk = 0;
}

生成唯一文件名防止覆盖

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

多文件上传实现

HTML 多文件上传表单

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="filesToUpload[]" id="filesToUpload" multiple>
    <input type="submit" value="上传文件" name="submit">
</form>

PHP 多文件处理

foreach ($_FILES["filesToUpload"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["filesToUpload"]["tmp_name"][$key];
        $name = basename($_FILES["filesToUpload"]["name"][$key]);
        move_uploaded_file($tmp_name, "uploads/$name");
    }
}

文件下载功能实现

创建下载链接

$files = glob('uploads/*');
foreach ($files as $file) {
    echo '<a href="download.php?file='.urlencode(basename($file)).'">下载 '.basename($file).'</a><br>';
}

下载处理脚本

$file = 'uploads/'.$_GET['file'];
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

php附件功能实现

标签: 附件功能
分享给朋友:

相关文章

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件…

vue实现倍速播放功能

vue实现倍速播放功能

实现倍速播放功能的方法 在Vue中实现倍速播放功能通常涉及HTML5的<video>元素或第三方播放器库(如video.js)的API调用。以下是具体实现方式: 使用原生HTML5 vi…

php实现linux关机重启功能

php实现linux关机重启功能

通过PHP执行Linux关机或重启命令 PHP可以通过exec()、shell_exec()或system()等函数调用系统命令实现关机或重启功能,但需注意权限问题。 使用exec函数执行命令 /…

php实现留言板功能

php实现留言板功能

PHP 留言板功能实现 数据库设计 创建数据库表 messages,包含以下字段: id:自增主键 name:留言者姓名(VARCHAR) email:留言者邮箱(VARCHAR) content…

vue功能实现难点

vue功能实现难点

Vue 功能实现的常见难点 响应式系统深度监听 Vue 的响应式系统基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3),但对嵌套对象或数组的深层属性变化需要额外…

vue怎么实现功能

vue怎么实现功能

Vue 是一个渐进式 JavaScript 框架,常用于构建用户界面。以下是一些常见的功能实现方法: 数据绑定 Vue 通过 v-model 实现双向数据绑定,适用于表单输入等场景: <te…