带有 Enctype 的 HTML 表单会中断 $_POST 数据


HTML Form With Enctype Breaks $_POST Data

现在有点令人困惑的问题。我正在尝试设置一个表单来上传视频。

这是表格:

        <form role="form" action="upload.php" method="post" enctype="multipart/form-data">
            <input type="hidden" name="upload" value="1">
            <div class="row">
                <div class="col-xs-6">
                    <span class="btn btn-lg btn-primary btn-block btn-file">
                        Browse... <input type="file" name="file">
                    </span>
                </div><!-- col-xs-6 -->
                <div class="col-xs-6">    
                    <h4 class="feedback-field text-centered">No file selected.</h4>
                </div><!-- col-xs-6 -->
            </div><!-- row -->
            <div class="row">
                <h4 class="error-field text-centered"></h4>
            </div><!-- row -->
            <div class="row">
                <div class="col-xs-4"></div>
                <div class="col-xs-4">
                    <input type="submit" name="submit" class="btn btn-primary btn-lg btn-block upload-btn disabled" value="Upload">
                </div>
                <div class="col-xs-4"></div>
            </div>
        </form>

这是上传时的相关 PHP.php:

    if(isset($_POST['upload'])){
        // do things with the file here
    } else {
        echo "No file found.";
    }

不幸的是,此表单似乎没有将任何文件传递到下一页。

如您所见,表单具有"enctype"值,这在上传视频时是必需的。但是,当表单具有该值时,它会中断,并且页面"upload.php"将不会收到任何 $_POST 数据(即,它将显示"找不到文件"消息。当然,如果没有 enctype,_FILES 美元是空的。

事情是这样的:我尝试更改它:

if(isset($_POST['upload'])){

对此:

if(isset($_FILES['file'])){

在这种情况下,我还会收到"找不到文件"消息。因此,似乎无论表单是否具有"enctype"属性,它都只是拒绝将文件传递到"上传.php"。

谁能在这里帮我?我或多或少迷茫了。谷歌并没有给我任何好的答案。

编辑:不知何故,这个问题在发布后的几秒钟内就被否决了 - 比任何人回答它的速度都要快。有人可能想调查这些明显欺诈性的反对票。

检查您的 php.ini 设置:

file_uploads 开启

max_file_uploads 20 20

post_max_size 8米 8米

upload_max_filesize 2米 2米

max_execution_time 18000 300

max_file_uploads 20 20

max_input_time 300 300

memory_limit 256米 1024米

为表单命名

<form role="form" action="upload.php" name="MyUpload" method="post" enctype="multipart/form-data">

更改提交输入的名称。

<input type="submit" name="VidUpload" class="btn btn-primary btn-lg btn-block upload-btn disabled" value="Upload">

检查是否已提交提交

if(isset($_POST['VidUpload'])){
  // do things with the file here
  echo "Form Submitted.";
} else {
  echo "No file found.";
}

对于遇到相同问题的人,请查看此页面:

WAMP 上传大文件

该问题给出了您需要在 php.ini 文件中更改的值以允许更大的文件上传(这就是破坏表单的原因)。