我正在尝试为我的一些图片库构建一个多文件上传脚本,我遇到了一个奇怪的错误。
由于我有几个画廊,它们都有自己的目录,我希望能够告诉脚本将我上传的文件放在哪里。因此,我添加了一些单选按钮来满足这种需求。当我上传文件时,他们会处理一些代码,并提供以下表格:
<?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_filesize
,max_file_uploads
和max_execution_time
,所以问题不应该存在,而且我完全没有想法。所以我的问题是为什么会发生这种情况以及我能做些什么呢?