-1

I´m traying to attach any files into email, and insert names into DB. But when i do a var_dump() in console i show one file only...

i have one input type file multiple:

<input type="file" name="adjunto" id="adjunto" multiple>

i get his value with jQuery:

var archivo = $("#adjunto").prop('files')[0];
var nombreArchivo = $("#adjunto").val();

and after insert into a formData()

formData.append('file', archivo);

i send all values to controller:

public function setIncidenciaPost(Request $request){

$uploadedFile = [];
$filename = [];


// bloque para adjuntar fichero al email al abrirIncidencia


if($request->file('file') != ""){

    $uploadedFile[] = $request->file('file');
    $destino = public_path().'/subidas';

    for($i=0; $i<count($filename); $i++){
        $filename[] = $uploadedFile[$i]->getClientOriginalName();
    }

    for($i=0; $i<count($filename); $i++){
        $uploadedFile->move($destino, $filename[$i]);
    }
    

    echo var_dump($uploadedFile);
    exit();
}
//fin bloque


$resultado = \DB::table('incidencias')->insert([
                                                 'fecha_solicitud' => $request["fechaSolicitud"],
                                                 'fecha_respuesta' => $request["fechaRespuesta"],
                                                       'categoria' => $request["categoria"],
                                                       'asignadoA' => $request["tecnico"],
                                                     'solicitante' => $request["solicitante"],
                                                       'prioridad' => $request["prioridad"],
                                                          'estado' => "pendiente",
                                                          'asunto' => $request["asunto"],
                                                          'cuerpo' => $request["mensaje"],
                                                         'cliente' => $request["cliente"],
                                                         'adjunto' => $filename
                                                ]);

$idIncidencia = \DB::getPdo()->lastInsertId();

// ENVIA EMAIL A LOS TÉCNICOS CUANDO SE GENERA LA INCIDENCIA
$this->enviarEmail($request);

When i do var_dump($filename) only i can show one file... i´m fettching all data and introduce it into one array, and also i´m fettching data name...

i know that i have a $("#adjunto").prop('files')[0]; and i sould to access only first file, but if i do var_dump(archivo) with out index i get in console:

 array(1) {
 [0]=>
  object(Illuminate\Http\UploadedFile)#248 (7) {
    ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    bool(false)
    ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    string(11) "Captura.PNG"
    ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    string(9) "image/png"
    ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    int(0)
    ["hashName":protected]=>
    NULL
    ["pathName":"SplFileInfo":private]=>
    string(24) "C:\xampp\tmp\phpB785.tmp"
    ["fileName":"SplFileInfo":private]=>
    string(11) "phpB785.tmp"
  }
}

and i can show my files... i don´t know that i´m doing wrong

Thanks for help, sorry for my english

UPDATE

input:

<input type="file" name="adjunto[]" id="adjunto" multiple>

JQUERY

var fechaSolicitud = $("#fechaSolicitud").val();
    var categoria = $("#categoria").val();
    var prioridad = $("#Abrirprioridad").val();
    var telefono = $("#telefonoContacto").val();
    var asunto = $("#asunto").val();
    var mensaje = $("#cuerpoMensaje").val();
    var token = $("#token").val();
    var archivo = $("#adjunto").prop('files');
    var nombreArchivo = $("#adjunto").val();
    var formData = new FormData();

    formData.append('file', archivo);
    formData.append('fechaSolicitud', fechaSolicitud);
    formData.append('categoria', categoria);
    formData.append('prioridad', prioridad);
    formData.append('asunto', asunto);
    formData.append('mensaje', mensaje);
    formData.append('solicitante', codigoSolicitante);
    formData.append('cliente', codigoCliente);
    formData.append('tecnico', tecnicoSeleccionado);
    formData.append('telefono', telefono);

    $.ajax({
        url: "/setIncidencia",
        type: "POST",
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        contentType: false,
        processData: false,   
        cache: false, 
        data: formData,
        success: function(data){
            $("#correcto").show();
            $("#correcto").append("Incidencia Generada");

            console.log(data);

CONTROLLER

public function setIncidenciaPost(Request $request){

    $uploadedFile = [];
    $filename = [];


    // bloque para adjuntar fichero al email al abrirIncidencia


    if($request->file('file') != ""){

        $uploadedFile[] = $request->file('file');
        $destino = public_path().'/subidas';

        for($i=0; $i<count($filename); $i++){
            $filename[] = $uploadedFile[$i]->getClientOriginalName();
        }

        for($i=0; $i<count($filename); $i++){
            $uploadedFile->move($destino, $filename[$i]);
        }
        

    }
    //fin bloque

    echo var_dump($filename);
        exit();


    $resultado = \DB::table('incidencias')->insert([
                                                     'fecha_solicitud' => $request["fechaSolicitud"],
                                                     'fecha_respuesta' => $request["fechaRespuesta"],
                                                           'categoria' => $request["categoria"],
                                                           'asignadoA' => $request["tecnico"],
                                                         'solicitante' => $request["solicitante"],
                                                           'prioridad' => $request["prioridad"],
                                                              'estado' => "pendiente",
                                                              'asunto' => $request["asunto"],
                                                              'cuerpo' => $request["mensaje"],
                                                             'cliente' => $request["cliente"],
                                                             'adjunto' => $filename
                                                    ]);

    $idIncidencia = \DB::getPdo()->lastInsertId();

    // ENVIA EMAIL A LOS TÉCNICOS CUANDO SE GENERA LA INCIDENCIA
    $this->enviarEmail($request);

}

RESPONSE VAR_DUMP IN WEB BROWSER CONSOLE

array(0) {
}
daviserraalonso
  • 75
  • 1
  • 13
  • 1
    Does this answer your question? [Laravel 5.3 - Attach Multiple Files To Mailables](https://stackoverflow.com/questions/42848363/laravel-5-3-attach-multiple-files-to-mailables) – Kamlesh Paul Nov 23 '20 at 09:38
  • @KamleshPaul thanks for your response, i showed it, but no, why i´m getting all files with jquery – daviserraalonso Nov 23 '20 at 09:43

1 Answers1

0

You have one file because you are uploading one file. The name of your input should be with brackets like:

<input type="file" name="adjunto[]" id="adjunto" multiple>

That way it should come as an array of files.

multiple is, let's say, for the browser to allow you to select more than one file at a time.

Zarko
  • 314
  • 2
  • 7
  • thanks for your response @ZarkoAtanasov but, if you can see my code and my response after change my code for your response... I´m doing this in Laravel. – daviserraalonso Nov 23 '20 at 17:06