[Resuelto] Erro con count() a un $_FILE

Iniciado por SrTrp, 16 Febrero 2020, 06:11 AM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

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

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 (javascript) [Seleccionar]

$(document).ready(function() {
               $('#files').click(function() {

                       var attachments = document.getElementById('archivo');
                       var data = new FormData();
                       for (i = 0; i < attachments.files.length; i++) {
                           data.append('file', attachments.files[i]);
                           console.log(attachments.files[i]);
                       }

                           $.ajax({
                               data: data ,
                               url: "subida.php",
                               type: "POST",
                               contentType: false,
                               processData: false,
                               success:
                                       function (r) {
                                           alert('' + r);
                                       }
                           });
                       });
               });

Y aqui esta como quiero saber cuantos archivos hay
Código (php) [Seleccionar]


   $count = count($_FILES['file']['name']);
for ($i = 0; $i < $count; $i++) {
   echo 'Nombre: '.$_FILES['file']['name'][$i].'<br/>';
}

SrTrp

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 (javascript) [Seleccionar]

var attachments = document.getElementById('archivo');
                        var data = new FormData();
                        var cc = attachments.files.length;
                        data.append('cc',cc);
                        for (i = 0; i < attachments.files.length; i++) {
                            data.append('file'+i, attachments.files[i]);                           
                        }

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.