You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP文件上传异常:选择MP4时$_POST['submit']检测为false

问题:上传MP4文件时PHP无法检测到submit字段,但PNG文件正常

相关PHP代码

<!DOCTYPE html>
<html lang="en">
<body>
<?php
    $filename="";
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        echo "isset post submit: "  .(isset($_POST['submit'])?"true":"false");
        if(isset($_POST['submit']))
        {
            $filename=$_FILES["local_med"]["name"];
            echo "<p>file: " .$filename;
        }
    } // POST
?>

    <h1>Upload File</h1>
    <form method="POST" enctype="multipart/form-data" >
        <input type="file" id="local_med" name="local_med"  required="true"
            accept="image/png, video/mp4"/>
        <br>
        <button type="submit" name="submit"> Submit </button>
    </form>
</body>
</html>

现象描述

  • 选择.png文件点击提交后,页面输出:
isset post submit: true
file: age.png
  • 选择.mp4文件提交后,页面输出:
isset post submit: false

补充信息

更新1:尝试用开发者工具查看请求payload,但找不到对应标签。
无payload标签

更新2:在Firefox中尝试,可以看到相关请求内容。
Firefox中的payload

可能的原因及解决方向

  1. PHP上传大小限制:MP4文件体积通常远大于PNG,如果文件大小超过了PHP配置中的upload_max_filesize或post_max_size值,PHP会直接丢弃整个POST请求的所有数据,自然检测不到$_POST['submit']。
  2. 服务器层面的请求限制:像Nginx、Apache这类Web服务器,自身也有请求体大小限制(比如Nginx的client_max_body_size),如果MP4文件超过这个限制,服务器会直接拒绝请求,PHP根本接收不到任何POST数据。
  3. 安全模块拦截:服务器上的安全插件(如ModSecurity)可能将大文件上传判定为风险请求,直接拦截,导致PHP收不到请求内容。

验证方法

  • 查看php.ini配置文件,确认upload_max_filesize、post_max_size、max_input_time这几个参数的值,确保要上传的MP4文件大小在允许范围内;
  • 检查Web服务器的配置,比如Nginx的client_max_body_size、Apache的LimitRequestBody,调整到合适大小;
  • 尝试上传一个极小的测试MP4文件(几KB大小),如果能正常检测到submit字段,就可以确定是文件大小限制导致的问题。

内容的提问来源于stack exchange,提问作者sofname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:21:49