PHP - $ _FILES数组为空

I w*_*ce. 6 html php file-upload

是的,该enctype属性已设置.其他表单/表单hanlders工作正常,因此临时目录必须是可写的.我没有想法.

我检查了帖子值并且$_POST['file']存在并包含文件的名称.

这是我的表单和处理它的PHP.我错过了什么?

<form action='orl_ftp.php' method='post' enctype='multipart/form-data'>
    <table>
        <tr>
            <td>Choose File: </td>
            <td><INPUT type='file' id='file' name='file'></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><INPUT type='submit' name='Submit' value='Process'></td>
        </tr>
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

以及相关的PHP代码.请注意,$ _FILES数组已设置,它只是空的.

if(isset($_POST['Submit'])){
    $upload_results = "";
    if(!isset($_FILES)){$upload_results .= "No files uploaded"; }
    if($upload_results == ""){

        echo "<pre>";
        var_dump($_FILES);
        exit;

        // ...

    }
}
Run Code Online (Sandbox Code Playgroud)

Pri*_*ner 3

101号线:

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" />
                                                                 ^
Run Code Online (Sandbox Code Playgroud)

这是导致问题的原因,浏览器使该表单保持打开状态,因此缺失enctype就是问题所在。正确删除或关闭此表单。

例子:

<?php
if(isset($_POST['Submit'])){
    $upload_results = "";
    if(!isset($_FILES)){$upload_results .= "No files uploaded"; }
    if($upload_results == ""){
        echo "<pre>";
        var_dump($_FILES);
        exit;
    }
}
?>
<form action='' method="post" />
<form action='' method='post' enctype='multipart/form-data'>
    <table>
        <tr>
            <td>Choose File: </td>
            <td><INPUT type='file' id='file' name='file'></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><INPUT type='submit' name='Submit' value='Process'></td>
        </tr>
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

这不会发布任何文件。

  • @AlirezaFallah,他在编辑帖子之前确实这样做了。我到底为什么要编这个故事? (3认同)