php - получить данные файла после клонированного поля ввода - PullRequest
0 голосов
/ 03 августа 2020

У меня есть форма с входным файлом, который можно клонировать, указав кнопку c.

когда я выбираю какой-то файл, клонирую поле ввода и выбираю новый файл (в новом поле ввода) и отправляю , я не получаю все данные первого файла в файле ajax.

Вот html на главной странице:

<a href="#" class="clone-ele-btn" data-target="clone_box" data-des="clone_des">Clone</a>
<form action="#" method="post" enctype="multipart/form-data">

    <span id="clone_box">
        <input type='file' name='file[]' />
    </span>

    <span id="clone_des"></span>    

    <a href="#" class="new-files-btn">Submit</a>
    
</form>

JQUERY:

// CLONE FILE INPUT FIELD
$(document).on("click", ".clone-ele-btn", function(e){

    var target = $(this).data("target");
    var des = $(this).data("des");
    
    $( "#" + target ).clone().appendTo( "#" + des );

    e.preventDefault(); 
});

// UPLOAD FILES
$(document).on("click", ".new-files-btn", function(e){

    var form = $(this).closest('form')[0]; 
    var formData = new FormData(form);
    
    
    $.ajax ({
        type: 'POST',
        url: 'ajax/files-control.php',
        data: formData,
        dataType: 'json',
        contentType: false,
        cache: false,
        processData:false
        }).done(function(data) 
        { 
        ....
        ...
        ..

управление файлами. php:

<?PHP
   var_dump ($_FILES);
?>

СЕТЕВАЯ ОТЛАДКА:

C:\wamp3\www\folder\ajax\files-control.php:13:
array (size=1)
  'file' => 
    array (size=5)
      'name' => 
        array (size=2)
          0 => string 'IMG_8913.JPG' (length=12)
          1 => string 'I-dont-have.jpg' (length=36)
      'type' => 
        array (size=2)
          0 => string '' (length=0)
          1 => string 'image/jpeg' (length=10)
      'tmp_name' => 
        array (size=2)
          0 => string '' (length=0)
          1 => string 'C:\wamp3\tmp\php36B6.tmp' (length=24)
      'error' => 
        array (size=2)
          0 => int 1
          1 => int 0
      'size' => 
        array (size=2)
          0 => int 0
          1 => int 50906

1 Ответ

1 голос
/ 03 августа 2020

Не тестировалось, но попробуйте создать новое поле ввода вместо клонирования старого.

let el = document.createElement('input');
el.type = 'file';
el.name = 'file[]';
document.getElementById('clone_box').appendChild(el);

Способ jQuery

$("#clone_box").append('<input type="file" name="file[]">');

Обновление

Проблема не в поле, а в самом файле. Он слишком велик и превышает предел загрузки php .ini .

UPLOAD_ERR_INI_SIZE Значение: 1; Загруженный файл превышает директиву upload_max_filesize в php .ini.

Поэтому вам необходимо адаптировать настройки php .ini или перегрузить их в файле .htaccess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...