Laravel 5.1: Как загрузить несколько файлов из трех разных полей ввода файлов?

У меня есть форма, в которой пользователь должен хотя бы выбрать один файл для загрузки. У меня есть три поля ввода файла, как это:

            <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>

Я должен проверить наличие по крайней мере одного файла и типов MIME в запросе формы. Затем в методе store связанного контроллера формы исходные имена файлов должны быть сохранены в трех соответствующих полях базы данных (а именно file1, file2, file3).

Как я могу это реализовать?

2

Решение

После некоторых поисков я наконец нашел решение. Прежде всего я изменил вид, чтобы он выглядел так:

<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>

Затем в контроллере я использовал предложенный вами код:

$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
);
}

}
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]