多个文件上传表单未发布

时间:2013-11-15 11:53:29

标签: php forms post file-upload

我正在尝试为我的一些图片库构建一个多文件上传脚本,我遇到了一个奇怪的错误。

由于我有几个画廊,它们都有自己的目录,我希望能够告诉脚本将我上传的文件放在哪里。因此,我添加了一些单选按钮来满足这种需求。当我上传文件时,他们会处理一些代码,并提供以下表格:

<?php
/* upload.php */
if(isset($_GET['upload']) && isset($_POST['loc'])){
    $loc = $_POST['loc'];
    $dir = getDir($loc); //Returns the directory to upload to, -1 on invalid input
    if($dir != -1){
        $i = 0;
        foreach($_FILES as $file){
            foreach($file as $key=>$v){
                foreach($v as $f){
                    $files[$i][$key] = $f;
                    $i++;
                }
                $i=0;
            }
        }
        foreach($files as $file)
            uploadImage($file,$dir);    //Uploads files to proper directory
    }else{
        print "Bad user! Don't alter things!";
    }
}elseif(!isset($_POST['loc']) && isset($_POST['submit'])){

    /* I should end up here if no location is supplied and the form is submitted */

    print "Enter a location please";
}
?>

<form action="upload.php?upload" method="post" enctype="multipart/form-data">
   <label for="file">Image:</label>
   <input type="file" name="files[]" id="file" multiple="multiple" required><br />
   <label for="dir1">Directory 1</label>
   <input type="radio" name="loc" id="dir1" value="1"><br />
   <label for="dir2">Directory 2</label>
   <input type="radio" name="loc" id="dir2" value="2"><br />
   <label for="dir3">Directory 3</label>
   <input type="radio" name="loc" id="dir3" value="3"><br />
   <input type="submit" name="submit" value="Upload">
</form>

文件解析本身有效,因此我不会为被调用的函数提供代码。什么不(总是)工作是我的表格的发布。如果我尝试上传35个文件,一切正常,我的图像上传到正确的目录。如果我尝试上传40个文件,则脚本不会运行。由于我可以看到设置$_GET['upload'],我可以推断出$_POST['loc']不是。这很奇怪,因为显式提交的表单$_GET['upload']已设置,如表单的操作所述。当我收到此错误时,未发布“请输入位置”,因此我知道$_POST['submit']也未发布。如果我var_dump两个变量中的任何一个,则返回NULL

我已经在php.ini文件中增加了upload_max_filesizemax_file_uploadsmax_execution_time,所以问题不应该存在,而且我完全没有想法。所以我的问题是为什么会发生这种情况以及我能做些什么呢?

1 个答案:

答案 0 :(得分:0)

我环顾四周,发现了一个类似的问题here。我尝试应用first answer中建议的解决方案,这似乎解决了这个问题。