我有一个包含从1到5的数字的下拉菜单。当用户从菜单中选择数字X时,他将获得X输入以上传文件。
这是代码:
<form action="uploadPage.php" method="post" enctype="multipart/form-data">
<select name="AllignmentCount" id="AllignmentCount">
<option value="0" selected="selected">0</option>
<option value="2">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<br/>
<script>
$('#AllignmentCount').change(function() {
if ($('#AllignmentCount').val() == '0') {
$('#upload_allign').hide('blonde');
}
else {
$('#upload_allign').show('blonde');
document.getElementById ('upload_allign').innerHTML='';
for ($i = 1; $i <= $('#AllignmentCount').val(); $i++) {
document.getElementById ('upload_allign').innerHTML = document.getElementById ('upload_allign').innerHTML + ' <p>File number '+$i+': <input type="file" name="file_array[]"></p>';
}
}
});
</script>
<div id="upload_allign">
// the file upload inputs appear here
</div>
这是php代码:
<?php
$flag=0;
$ticket=$_SESSION['Ticket'];
if(isset($_FILES['file_array'])){
$name_array = $_FILES['file_array']['name'];
$tmp_name_array = $_FILES['file_array']['tmp_name'];
for($i = 0; $i < count($name_array); $i++)
$name_array[$i]=$ticket.$name_array[$i];
for($i = 0; $i < count($name_array); $i++){
if(!move_uploaded_file($tmp_name_array[$i], "testUploads/".$name_array[$i]))
$flag=1;
}
$_SESSION['myarray']=$name_array;
}
?>
到目前为止,一切都运作良好。问题现在开始:我添加了另一个下拉列表,允许用户也上传第二个文件列表。所以目前我有两个单独的下拉列表。该表单包含两个文件上传输入。这是第二个代码:
下拉列表:
<select name="SequenceCount" id="SequenceCount">
<option value="0" selected="selected">0</option>
<option value="2">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<br/>
<script>
$('#SequenceCount').change(function() {
if ($('#SequenceCount').val() == '0') {
$('#upload_sequen').hide('blonde');
}
else {
$('#upload_sequen').show('blonde');
document.getElementById ('upload_sequen').innerHTML='';
for ($i = 1; $i <= $('#SequenceCount').val(); $i++) {
document.getElementById ('upload_sequen').innerHTML = document.getElementById ('upload_sequen').innerHTML + ' <p>File number '+$i+': <input type="file" name="file_array2[]"></p>';
}
}
});
</script>
<div id="upload_sequen">
// the file upload inputs appear here
</div>
php代码:
<?php
if(isset($_FILES['file_array2'])){
$name_array2 = $_FILES['file_array2']['name'];
$tmp_name_array2 = $_FILES['file_array2']['tmp_name'];
for($i = 0; $i < count($name_array2); $i++)
$name_array2[$i]=$ticket.$name_array2[$i];
for($i = 0; $i < count($name_array2); $i++){
if(!move_uploaded_file($tmp_name_array2[$i], "testUploads/".$name_array2[$i])){
$flag=1;
}
$_SESSION['myarray2']=$name_array2;
}
?>
最后我有这个按钮,可以上传两个集合中的所有文件
<input type="submit" class="btn btn-default btn-lg" value="Upload all files">
</form>
错误在于,当我现在选择从第一组上传的X文件和从第二组上传的Y文件时,flag设置为1,这意味着并非所有文件都被上传。我检查了服务器试图上传的文件的名称,我发现它总是试图从第一组上传一个额外的非现有文件而且这个文件没有名字!只是我附加到任何上传文件开头的票号。
造成这个问题的原因是什么?
注意:当我有一组要上传的文件时,它可以正常工作,当我添加第二个文件时会出现问题。