subir multiples manejo imagenes imagen guardar documentos descargar datos cómo con cargar archivos php laravel file-upload laravel-5 multiple-file-upload

php - manejo - subir multiples archivos laravel



Laravel 5.1: ¿Cómo subir múltiples archivos desde tres campos diferentes de entrada de archivos? (1)

Tengo un formulario en el que el usuario debe al menos seleccionar un archivo para cargar. Tengo tres campos de entrada de archivos como este:

<div class="form-group col-lg-4"> {!! Form::label(''file1'', ''Select file 1'', [''class'' => ''control-label'']) !!} {!! Form::file(''files[]'', [''id''=>''file1'']) !!} </div> <div class="form-group col-lg-4"> {!! Form::label(''file2'', ''Select file 2'', [''class'' => ''control-label'']) !!} {!! Form::file(''files[]'', [''id''=>''file2'']) !!} </div> <div class="form-group col-lg-4"> {!! Form::label(''file3'', ''Select file 3'', [''class'' => ''control-label'']) !!} {!! Form::file(''files[]'', [''id''=>''file3'']) !!} </div>

Debo validar la presencia de al menos un archivo y los tipos mime en una solicitud de formulario. Luego, en el método de almacenamiento del controlador de formulario relacionado, los nombres de archivo originales se deben almacenar en los tres campos de base de datos correspondientes (a saber, archivo1, archivo2, archivo3).

¿Cómo puedo implementar esto?


Después de buscar un poco, finalmente encontré una solución. Antes que nada, modifiqué la vista para que se vea así:

<div class="form-group col-lg-4"> {!! Form::label(''file1'', ''Select file 1'', [''class'' => ''control-label'']) !!} {!! Form::file(''file1'', [''id''=>''file1'']) !!} </div> <div class="form-group col-lg-4"> {!! Form::label(''file2'', ''Select file 2'', [''class'' => ''control-label'']) !!} {!! Form::file(''file2'', [''id''=>''file2'']) !!} </div> <div class="form-group col-lg-4"> {!! Form::label(''file3'', ''Select file 3'', [''class'' => ''control-label'']) !!} {!! Form::file(''file3'', [''id''=>''file3'']) !!} </div>

Luego en el controlador utilicé su código sugerido:

$files =[]; if ($request->file(''file1'')) $files[] = $request->file(''file1''); if ($request->file(''file2'')) $files[] = $request->file(''file2''); if ($request->file(''file3'')) $files[] = $request->file(''file3''); foreach ($files as $file) { if(!empty($file)){ $filename=$file->getClientOriginalName(); $file->move( base_path().''/public/uploads/'', $filename ); } }