php - Codeigniter $_FILES 没有上传所有文件

标签 php jquery file codeigniter clone

我有一个表单,允许用户通过克隆文件输入来添加多个文件。但是,当我提交表单并使用“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

最佳答案

您好,我已经创建并测试了它。按我的预期工作! :)

文件: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>

关于php - Codeigniter $_FILES 没有上传所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16562163/

相关文章:

javascript - 使用Jquery获取两个属性

linux - 如何在 Centos 6.2 中找回错放的文件

Git 撤消某些文件中的更改

php - PHP MySQLnotice undefined variable ,形式为

javascript - jQuery - 提交事件是否保存提交表单的查询字符串或数据?

php - 如何最快地计算 php 中设置位的数量?

javascript - 表单无法提交,未捕获类型错误 : Illegal invocation

c++ - int n != unsigned int(n) 的含义

php - 不工作要求

php - 简单的PHP随机数组