我有一个表单,允许用户通过克隆文件输入来添加多个文件。但是,当我提交表单并使用'print_r($ _ FILES)'时,它不显示我添加的所有文件,只显示第一个。
HTML:
<form action="admin/admin_area/save_personnel" method="post" enctype="multipart/form-data" id="add_personnel">
<div class="certificates_list">
<input type="file" name="user_certificates[]" />
<input type="text" name="certificate_name[]" class="right"/>
<input type="text" name="expiry_date[]" class="expiry_date" />
</div>
<div id="certificates_new"></div>
<p><button type="button" id="add_certificate">Add another certificate</button></p>
</form>
jQuery的:
$(function() {
$('#add_certificate').click( function(event){
event.preventDefault();
var clone = $('.certificates_list:first').clone(true).appendTo('#certificates_new');
clone.find("input").val("");
clone.find(".expiry_date").datepicker('destroy').removeClass('hasDatepicker').removeAttr('id').datepicker({
dateFormat: 'dd-mm-yy',
yearRange: '1900',
changeMonth: true,
changeYear: true }).attr('name', 'expiry_date[]');
$(":input").each(function (i) { $(this).attr('tabindex', i + 1); });
});
});
如果我上传3个文件和print_r($ _ FILES),我会得到以下只显示一个文件
Array ( [name] => Array ( [0] => license.txt ) [type] => Array ( [0] => text/plain ) [tmp_name] => Array ( [0] => C:\wamp\tmp\php42B1.tmp ) [error] => Array ( [0] => 0 ) [size] => Array ( [0] => 2496 ) )
为什么它只拾取其中一个文件而不是所有文件?我过去做过类似的事情,直到现在我还没有遇到任何问题。任何帮助将不胜感激!
$ _FILES ['user_certificates]的var_dump给了我这个(在我上传3个文件后)
array (size=5)
'name' =>
array (size=1)
0 => string 'license.txt' (length=11)
'type' =>
array (size=1)
0 => string 'text/plain' (length=10)
'tmp_name' =>
array (size=1)
0 => string 'C:\wamp\tmp\phpE11.tmp' (length=22)
'error' =>
array (size=1)
0 => int 0
'size' =>
array (size=1)
0 => int 2496
答案 0 :(得分:1)
您好我已经创建并测试了这个。像我预期的那样工作! :)
文件:16562761.php
<?php
if (!empty($_POST)) {
var_dump($_FILES);exit;
}
?>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" id="add_personnel">
<div id="certs_container"></div>
<p><button type="button" id="add_certificate">Add another certificate</button></p>
<p><button type="submit" id="submit">Submit</button></p>
</form>
<div style="display: none;" id="cloner">
<div class="certificates_list">
<input type="file" name="user_certificates[]" />
<input type="text" name="certificate_name[]" class="right"/>
<input type="text" name="expiry_date[]" class="expiry_date" />
</div>
</div>
<script type="text/javascript">
function add_clone() {
var clone = $('#cloner').html();
$('#certs_container').append(clone);
}
$(function() {
add_clone();
$('#add_certificate').click(function(e){
add_clone();
e.preventDefault();
});
});
</script>
</body>
</html>