上一篇
场景引入:
小明正熬夜赶公司报表系统,用户上传的Excel文件死活存不进服务器,页面只冷漠显示“上传失败”…😤 别急!今天咱们就用“说人话”的方式拆解PHP文件上传,附赠高频踩坑急救包!
<!-- 必须加 enctype!否则文件传不过去 --> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="myFile" id="myFile"> <button type="submit">🚀 发射文件</button> </form>
<?php if ($_FILES['myFile']['error'] === UPLOAD_ERR_OK) { $tmpPath = $_FILES['myFile']['tmp_name']; // 临时文件路径 $fileName = basename($_FILES['myFile']['name']); // 原始文件名 // 建议:用时间戳+随机数防重名 $newName = time() . '_' . mt_rand(100,999) . '.' . pathinfo($fileName, PATHINFO_EXTENSION); // 移动文件到永久目录(注意权限!) $targetDir = "uploads/"; if (move_uploaded_file($tmpPath, $targetDir . $newName)) { echo "🎉 上传成功!保存为:" . $newName; } else { echo "💥 文件移动失败,检查目录权限!"; } } else { // 错误代码解析见下文 echo "上传出错:" . $_FILES['myFile']['error']; } ?>
限制文件类型
$allowedTypes = ['image/jpeg', 'application/pdf']; if (!in_array($_FILES['myFile']['type'], $allowedTypes)) { die("❌ 禁止上传此类型文件!"); }
控制文件大小
// php.ini中需设置 upload_max_filesize 和 post_max_size $maxSize = 2 * 1024 * 1024; // 2MB if ($_FILES['myFile']['size'] > $maxSize) { die("📏 文件大小超过限制!"); }
重命名文件
病毒扫描(进阶)
// 调用系统命令扫描(需安装ClamAV等) exec("clamscan --no-summary " . $tmpPath, $output, $returnCode); if ($returnCode !== 0) { unlink($tmpPath); // 删除危险文件 die("🦠 检测到恶意文件!"); }
目录隔离
chmod 755 uploads/
) .htaccess
禁止PHP解析: php_flag engine off
php.ini
: upload_max_filesize = 10M post_max_size = 12M // 必须比upload_max_filesize大!
<form>
是否漏写enctype
file_uploads
是否为Onupload_tmp_dir
)是否有写入权限 # Linux下快速修复(将用户组设为Web服务器用户) chown -R www-data:www-data uploads/ chmod -R 755 uploads/
// 转换编码(UTF-8 → 系统编码) $fileName = mb_convert_encoding($_FILES['myFile']['name'], 'GB2312', 'UTF-8');
进度条实现思路
FileReader
分片读取 批量上传
<input type="file" name="files[]" multiple> <!-- 关键在[]和multiple -->
云端存储集成
$ossClient->uploadFile($bucket, $object, $tmpPath);
最后叮嘱:
display_errors=Off
) 遇到其他问题?试试var_dump($_FILES)
把上传数据“扒光”看看! 😉
本文由 羊舌平萱 于2025-08-01发表在【云服务器提供商】,文中图片由(羊舌平萱)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/500673.html
发表评论