本文讲解 PHP 中如何准确判断文件上传操作是否成功,重点指出常见错误:误用 $_POST 检查文件字段,而应使用 $_FILES 超全局数组;并通过修正后的代码实现“上传成功显示 OK,未选择文件则提示请选择”的基础功能。
本文讲解 php 中如何准确判断文件上传操作是否成功,重点指出常见错误:误用 `$_post` 检查文件字段,而应使用 `$_files` 超全局数组;并通过修正后的代码实现“上传成功显示 ok,未选择文件则提示请选择”的基础功能。
在 HTML 表单中通过 <input type="file"> 上传文件时,PHP 不会将文件信息存入 $_POST 数组,而是统一归入 $_FILES 超全局变量。这是初学者极易忽略的关键点——若错误地使用 isset($_POST["uploadedFile"]) 判断,无论用户是否选择了文件,该条件始终为 false(因为文件名不会以普通 POST 字段形式提交),导致逻辑永远走入 else 分支,始终输出“Please select the desired file!”。
正确的检测方式是检查 $_FILES 中对应字段是否存在且非空。以下是修正后的 PHP 代码:
<?phpsession_start();$msg = null;if ($_SERVER["REQUEST_METHOD"] === "POST") { // 确认表单是通过 POST 提交,且上传按钮被点击 if (isset($_POST["uploadBtn"]) && $_POST["uploadBtn"] === "Upload") { // ✅ 正确:检查 $_FILES 而非 $_POST $file = $_FILES["uploadedFile"] ?? null; if ($file && $file["error"] === UPLOAD_ERR_OK) { echo "Ok"; } else { echo "Please select the desired file!"; } }}?>
? 关键说明:
- $_FILES["uploadedFile"] 是一个关联数组,包含 name、type、tmp_name、error、size 五个键;
- UPLOAD_ERR_OK(值为 0)表示上传无错误,这才是判断“用户确实上传了一个有效文件”的可靠依据;
- 单纯 isset($_FILES["uploadedFile"]) 不够严谨——即使用户未选文件,该键仍存在(其 error 值为 UPLOAD_ERR_NO_FILE,即 4);因此必须结合 $file["error"] === UPLOAD_ERR_OK 判断。
此外,请确保 HTML 表单已正确设置 enctype="multipart/form-data"(您的代码中已具备,这点非常关键),否则文件数据根本不会发送至服务器。
✅ 总结:
阿里云百炼Token Plan和Coding Plan省钱订阅计划:如何选择?有哪些区别?
最新:阿里云万小智收费价格:活动15元1个月:180元1年:轻量版、标准版及高级版功能支持
移动端的AI助手不应只是客服窗口:更应借助AI能力将小程序服务变成可调用能力
AI搜索引用到客户咨询:中间隔着三层数据漏斗
【码道代码智能体】码道界面焕新:AI 懂需求 开发更顺手
CodexBar:把 AI 编码额度接入 macOS 菜单栏