PHP上传表单获胜';t上传的文件不超过16个


PHP upload form won't upload more than 16 files

这些文件都是相对较小的XML,远低于最大上传限制,我已将php.ini中的max_file_upload值调整为30。所有文件都可以以任意组合上传,最多可以上传16个文件。更重要的是,表单实际上不会"POST"。它会跳转到下一页,但我已经输入了一些代码,如果表单已经提交,就会显示文本,而如果选择了超过16个文件,则不会显示文本。我对此感到不知所措,在网络上也没有太多帮助。

<form method="post" enctype="multipart/form-data" name="uploadForm" id="uploadForm" action="?pa=uxf">
        <table border="0" cellspacing="5" cellpadding="5">
          <tbody>
            <tr>
                <td valign="top"><label for="fileField"><strong>Upload XML Files to Repository:</strong></label><br /><?php
            if(isset($_POST['upload'])) {
                $fileCount = count($_FILES['fileToUpload']['tmp_name']);
                echo '<br /><br />File Count: '.$fileCount.'<br />';
                for ($i = 0; $i < $fileCount; $i++) {
                    echo '<br />';
                    $target_dir = 'uploads/';
                    $target_file = $target_dir.basename($_FILES['fileToUpload']['name'][$i]);
                    $uploadOk = 1;
                    $fileType = pathinfo($target_file,PATHINFO_EXTENSION);
                    $check = filesize($_FILES['fileToUpload']['tmp_name'][$i]);
                    if($check !== false) {
                        echo '<span style="color: #00AA00">File is an xml.</span><br />'.$check['mime'];
                        $uploadOk = 1;
                    } else {
                        echo '<span style="color: #FF0000">File is not an xml.</span><br />';
                        $uploadOk = 0;
                    }
                    if (file_exists($target_file)) {
                        echo '<span style="color: #FF0000">Sorry, <strong>'.$target_file.'</strong> already exists.</span><br />';
                        $uploadOk = 0;
                    }
                    if ($_FILES['fileToUpload']['size'][$i] > 50000000) {
                        echo '<span style="color: #FF0000">Sorry, your file is too large. Must be less than 50MG.</span><br />';
                    $uploadOk = 0;
                    }
                    if($fileType != 'xml') {
                        echo '<span style="color: #FF0000">Sorry, only XML files are allowed.</span><br />';
                        $uploadOk = 0;
                    }
                    if ($uploadOk == 0) {
                    echo '<span style="color: #FF0000">Sorry, your file was not uploaded.</span><br />';
                    } else {
                        if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'][$i], $target_file)) {
                        echo '<span style="color: #00AA00">The file '.basename($_FILES['fileToUpload']['name'][$i]).' has been uploaded.</span><br />';
                        } else {
                        echo '<span style="color: #FF0000">Sorry, there was an error uploading your file.</span><br />';
                        }
                    }
                }
            } ?>
                    <table width="100%" border="0" cellspacing="5" cellpadding="5">
                        <tbody>
                            <tr valign="top">
                                <td><input type="file" name="fileToUpload[]" id="fileToUpload[]" multiple></td>
                                </tr>
                            <tr valign="top">
                                <td><input type="submit" name="upload" id="upload" value="Upload XML"></td>
                                </tr>
                            </tbody>
                        </table></td>
                <td valign="top"><strong>Uploaded Files List:</strong><br><?php
            $int = 1;
            foreach (new DirectoryIterator($directory) as $fileInfo) {
                if($fileInfo->isDot()) continue;
                $file =  $fileInfo->getFilename();
                echo $int.'. <a href="'.$directory.$file.'">'.$file.'</a><br />';
                $int++;
            } ?></td>
                </tr>
            </tbody>
        </table>
      </form>

除了max_file_upload之外,还有另外两个与文件上传相关的ini设置。

upload_max_filesize(默认值2 MB)限制每个文件的上载大小,post_max_size(默认值8 MB)限制post内容(包括文件上载)的总大小。

如果你违反了任何一个限制,都可能导致你所看到的行为。

由于在php代码执行之前,这两者都是相关的,因此您需要查看php.ini(和/或.htaccess设置,视情况而定),并确保将它们设置为允许接受所有POST内容的级别。