0

I'm new working with files and I want to upload multiple files in this case images using just one input type file but this input isn't inside a form tag, this work when i click on a button

 <input type="file" class="form-control" id="imagenArticulo" multiple="multiple">

when my images are selected I press the button and do this

$('#guardarArticulo').click(function(e) {

    e.preventDefault();

    let imagen    = $('#imagenArticulo').prop('files');

    console.log(imagen);

    let form_data = new FormData();

    form_data.append('imagen', imagen);

    $.ajax({

        type: 'post',
        cache: false,
        contentType: false,
        processData: false,
        url: '../includes/productos/guardar_producto.php',
        data: form_data,
        dataType: 'json',

        beforeSend: function() {

        },

        success: function(respuesta) {

            console.log(respuesta);

            if (respuesta.tipo == 0) {

                window.location.reload(true);
            }

            if (respuesta.tipo == 1) {

                //do soemthing
            }
        }
    });
});

The first console.log of the variable imagenafter click show this

enter image description here

And finally with PHP when try to process them I do this

 if (!is_null($_FILES['imagen']['name'])) {

    if ($_FILES['file']['error'] == 0) {


        if (!is_dir($ruta)) {

            mkdir($ruta);
            mkdir($ruta . '/original');
            mkdir($ruta . '/thumbnail');
        }


        $numero_de_imagenes = count($_FILES['imagen']['tmp_name']);


        for ($i = 0; $i < $numero_de_imagenes; $i++) {

            $imagen  = $_FILES['imagen']['name'][$i];
            $img_tmp = $_FILES['imagen']['tmp_name'][$i];

            $formato = strtolower(pathinfo($imagen, PATHINFO_EXTENSION)); 


            if (in_array($formato, $formatos_validos)) {

                $ext_tmp = explode('.', $imagen);

                $imagen = sha1($imagen.$random) . '.' . end($ext_tmp);

                $ruta = $ruta . '/original/' . $imagen;

                move_uploaded_file($img_tmp, $ruta);


                list($ancho, $alto) = getimagesize($ruta);

                if ($_FILES['imagen']['size'][$i] > 524288 || $ancho > 500 || $alto > 500) {

                    comprimir($imagen, $fuente, $fuente, 500, 500, 90);
                }

                comprimir($imagen, $fuente, $destino, 100, 100, 90);
            }
        }
    }

}

I have been with this code before but just for one file, the new part was add the for loop to it, but when i press click the ajax response is not showing nothing, is not displaying errors or something, I would like to know what i'm missing or doing wrong, algo before the code I tried to print $_FILES['imagen'] to see if it has content but dont show nothing, I hope you can help me, thanks.

Ashe
  • 187
  • 1
  • 13

0 Answers0