Laravel使用不同的用户上传多个图像

时间:2018-03-21 06:53:46

标签: php laravel laravel-5.6

我正在尝试上传多张图片,每张图片都与不同的员工相关联。这是一个示例场景。我有4名员工。我希望为2名员工添加不同的形象,而不是休息2。现在发生的事情是:

  1. 如果我没有为任何一个添加任何图像,则所有4个图像都会获得默认图像(预期)
  2. 如果我为2名员工添加不同的图片而留下其他2名,则所有4名图片都会上传最后一张图片。
  3. 如果我为1名员工添加一张图片,并留下其他3张图片,则所有4张图片都会获得上传的图片。
  4. 对于2和3种情况,我希望为每位员工上传相关图片,如果没有上传,我会上传默认图片。

    以下是表格:

    @if ($employee->payment_option == 2)
       <div class="form-group{{ $errors->has('receipt') ? ' has-error' : '' }}">
       <input type="file" name="receipt[]" multiple>
           @if ($errors->has('receipt'))
               <span class="help-block">
                   <strong>{{ $errors->first('receipt') }}</strong>
               </span>
           @endif
       </div>
    @endif
    

    这是控制器存储方法

    public function store(Request $request)
        {
            if ($request->hasFile('receipt')) {
                $files = $request->file('receipt');
                foreach ($files as $key => $file) {
                    $extension = $file->getClientOriginalExtension();
                    $fileNameWithExt = $file->getClientOriginalName();
                    $fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
                    $fileName = $fileName.'_'.time().'.'.$extension;
                    $folderpath  = 'public/images'.'/';
                    $file->move($folderpath, $fileName);
                }
            }
    
            foreach ($request->employee_id as $key => $val) {
                $payrolls = new Payroll;
                $payrolls->employee_id = $val;
                if (!empty($request->receipt)) {
                    $payrolls->receipt = $fileName;
                } else {
                    $payrolls->receipt = 'noimage.jpg';
                }
                $payrolls->save();
            }
            return redirect('/');
        }
    

    上传多个文件有几个问题,他们的解决方案很好。但是,我需要上传与每个员工关联的每个文件。如果没有为员工上传文件,则应附上默认图像。

1 个答案:

答案 0 :(得分:0)

<input type="file" name="receipt[]" multiple>

我认为您对所有表单使用相同的名称receipt ...使用不同的名称,例如“receipt1receipt2”......就像这样,并相应地更改控制器。