当前位置:首页 > 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 "上传过程中出现错误";
    }
}
?>

安全增强措施

验证文件类型和内容

php附件功能实现

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

生成唯一文件名防止覆盖

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

多文件上传实现

HTML 多文件上传表单

php附件功能实现

<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;
}

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

相关文章

vue实现收货功能

vue实现收货功能

Vue实现收货功能的基本思路 收货功能通常涉及前端界面交互、后端数据更新和状态管理。在Vue中,可以通过组件化开发实现这一功能,结合API调用与状态管理工具(如Vuex或Pinia)。 创建收货按钮…

vue实现功能

vue实现功能

Vue 实现功能的方法 Vue.js 是一个流行的前端框架,用于构建用户界面。以下是几种常见的功能实现方法: 数据绑定 Vue 提供了双向数据绑定,可以通过 v-model 指令实现表单输入和应用状…

vue实现按钮实现点击功能

vue实现按钮实现点击功能

实现按钮点击功能 在Vue中实现按钮点击功能可以通过v-on指令或@缩写来绑定事件。以下是几种常见的实现方式: 使用v-on指令 通过v-on:click绑定点击事件,触发定义在methods中的方…

vue实现答题功能

vue实现答题功能

Vue实现答题功能 数据准备 创建一个包含题目、选项和正确答案的数据结构,通常是一个数组对象。每个题目对象包含问题文本、选项数组和正确答案索引。 const questions = [ {…

vue实现付费功能

vue实现付费功能

Vue 实现付费功能的方法 集成第三方支付平台 选择适合的第三方支付平台(如支付宝、微信支付、Stripe、PayPal等),并按照其文档进行集成。在 Vue 项目中,可以通过引入支付平台的 SDK…

vue实现修改功能

vue实现修改功能

Vue 实现修改功能的方法 数据绑定与表单处理 使用v-model实现双向数据绑定,快速获取表单输入值。适用于表单类修改场景: <template> <input v-mode…