【问题标题】:Laravel 5.1: How to upload multiple files from three different file input fields?Laravel 5.1:如何从三个不同的文件输入字段上传多个文件?
【发布时间】:2015-11-03 08:35:21
【问题描述】:

我有一个表单,用户至少应该选择一个要上传的文件。我有三个这样的文件输入字段:

            <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)中。

我该如何实现?

【问题讨论】:

  • @RyanVincent 谢谢。但这对我没有帮助
  • @AliErfani 为什么链接没有帮助?详细描述了 Laravel 中上传多个文件的过程以及如何实现你的 store 方法
  • @jedrzej.kurylo 它描述了从一个字段上传多个文件。我应该分别验证每个文件,然后将每个文件的原始名称保存到数据库中
  • 您将使用链接中描述的方法获取每个字段的原始名称

标签: php laravel file-upload laravel-5 multiple-file-upload


【解决方案1】:

经过一番搜索,我终于想出了一个解决方案。首先,我将视图修改为如下所示:

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

        }

【讨论】:

  • 如果我在数据库中有三个不同的字段怎么办?那么我将如何将 3 个不同的图像存储在数据库中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多