登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  php教程

PHP文件上传教程详解

时间:2026-01-30 13:52:51 409浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《PHP上传文件代码教程》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

在PHP中实现安全文件上传需结合HTML表单与$_FILES变量处理。首先创建含enctype的表单,提交至upload.php;后端设置目标目录并检查其存在性(mkdir创建)。通过getimagesize验证是否为合法图片,防止伪装文件;检查文件是否存在以避免覆盖;限制大小(如5MB);白名单过滤格式(jpg、pdf等)。建议使用finfo获取真实MIME类型,提升安全性;重命名文件为uniqid生成的随机名,防止恶意执行;上传目录禁止脚本运行,并配置PHP允许上传及合理大小限制。最终move_uploaded_file移动临时文件,完成上传。核心是前后端协同与多重校验保障安全。

php上传文件代码

在PHP中实现文件上传功能,主要依赖于HTML表单和PHP的$_FILES超全局变量。下面是一个简单、安全且实用的文件上传示例代码。

1. HTML 表单部分

用户通过这个表单选择要上传的文件:



2. PHP 处理文件上传(upload.php)

以下是处理上传的核心PHP代码,包含基本的安全检查:

// 检查目录是否存在,不存在则创建
if (!is_dir($targetDir)) {
mkdir($targetDir, 0777, true);
}

// 检查是否选择了文件 if (isset($_POST["submit"])) { $check = getimagesize($_FILES["uploadedFile"]["tmp_name"]); if ($check !== false) { echo "文件是图片 - " . $check['mime'] . ".
"; $uploadOk = 1; } else { echo "文件不是有效图片。
"; $uploadOk = 0; } }

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

// 限制文件大小(例如5MB) if ($_FILES["uploadedFile"]["size"] > 5000000) { echo "抱歉,文件太大,不能超过5MB。
"; $uploadOk = 0; }

// 允许的文件格式 $allowedTypes = array('jpg', 'jpeg', 'png', 'gif', 'pdf', 'docx'); if (!in_array($imageFileType, $allowedTypes)) { echo "只允许上传 JPG, JPEG, PNG, GIF, PDF, DOCX 文件。
"; $uploadOk = 0; }

// 如果一切检查通过,则上传文件 if ($uploadOk == 1) { if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"], $targetFile)) { echo "文件 ". htmlspecialchars(basename($_FILES["uploadedFile"]["name"])) . " 上传成功。"; } else { echo "上传过程中发生错误。"; } } else { echo "文件上传被拒绝。"; } ?>

3. 安全建议与注意事项

  • 不要依赖文件扩展名判断类型:使用 finfo 函数检测MIME类型更安全。
  • 重命名上传文件:避免覆盖或执行恶意脚本,可使用 uniqid() 生成新文件名。
  • 禁止执行权限:上传目录不要放在可执行PHP的位置,或通过服务器配置禁用脚本执行。
  • 验证表单来源:防止CSRF攻击,可加入Token验证。
  • 设置PHP配置:确保 file_uploads = On,并合理设置 upload_max_filesizepost_max_size

4. 改进建议:更安全的文件名处理

推荐将文件名改为随机名称以提高安全性:

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

基本上就这些。一个完整的文件上传功能需要前端配合、后端验证和服务器安全设置三者结合,才能保障可用性和安全性。

终于介绍完啦!小伙伴们,这篇关于《PHP文件上传教程详解》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>