Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: SrTrp en 16 Febrero 2020, 06:11 am



Título: [Resuelto] Erro con count() a un $_FILE
Publicado por: SrTrp en 16 Febrero 2020, 06:11 am
Estoy enviando varias archivos y estoy testeando de que me los lea pero al momento que quiero contar cuantos archivos envia via AJAX me arroja este error
Código:
Warning :count():Parameter must be an array or an object that implements Countable in c://DIRECCIONDELPHP ONLINE 15
Así estoy enviando mis archivos por ajax
Código
  1. $(document).ready(function() {
  2.                $('#files').click(function() {
  3.  
  4.                        var attachments = document.getElementById('archivo');
  5.                        var data = new FormData();
  6.                        for (i = 0; i < attachments.files.length; i++) {
  7.                            data.append('file', attachments.files[i]);
  8.                            console.log(attachments.files[i]);
  9.                        }
  10.  
  11.                            $.ajax({
  12.                                data: data ,
  13.                                url: "subida.php",
  14.                                type: "POST",
  15.                                contentType: false,
  16.                                processData: false,
  17.                                success:
  18.                                        function (r) {
  19.                                            alert('' + r);
  20.                                        }
  21.                            });
  22.                        });
  23.                });
  24.  
Y aqui esta como quiero saber cuantos archivos hay
Código
  1.  
  2.    $count = count($_FILES['file']['name']);
  3. for ($i = 0; $i < $count; $i++) {
  4.    echo 'Nombre: '.$_FILES['file']['name'][$i].'<br/>';
  5. }
  6.  


Título: Re: Erro con count() a un $_FILE
Publicado por: SrTrp en 16 Febrero 2020, 07:09 am
Ya lo solucione me falto leer documentación sobre FormData que crea claves, es decir solo mandaba 1 archivo para esto solo hice lo siguiente por si a alguien le sirve.
Código
  1. var attachments = document.getElementById('archivo');
  2.                        var data = new FormData();
  3.                        var cc = attachments.files.length;
  4.                        data.append('cc',cc);
  5.                        for (i = 0; i < attachments.files.length; i++) {
  6.                            data.append('file'+i, attachments.files[i]);                            
  7.                        }
  8.  
El cc es la longitud de cuantos archivos mando ya despues en el php solo concateno dentro de un form como file0 file1, y listo.