使用for循环的Laravel多个图像上传

时间:2016-11-06 20:50:52

标签: php laravel laravel-5.3

我的情况是我必须根据用户需要上传一些图片。用户可能有1,2或3个以上的++儿童。所以我在上传他的孩子图像时使用for循环。这是我的表格:

@for($i=1;$i<=$ticket->children_count;$i++)
    <div class="form-group">
      <label for="">Child {{ $i }} Name:</label>
      <input type="text" name="child_name_{{$i}}" value="" required="" class="form-control">
    </div>
    <div class="form-group">
       <label for="">Child {{ $i }} Photo:</label>
       <input type="file" name="child_picture_{{$i}}" value="" required="">
    </div>
 @endfor

我想从后端接收文件,但不知怎的,我得到了null。 这是控制器内的for循环:

for ($i=1; $i <= $ticket->children_count ; $i++) {
            $file = $request->file("child_picture_.$i");
            dd($request->child_name_.$i);
}

上面的代码只返回$ i的值。我如何正确收到文件?它必须类似于child_name_1child_name_2 child_picture_1child_picture_3等。

2 个答案:

答案 0 :(得分:0)

您应该替换以下内容:

dd($request->child_name_.$i);
// php thinks that you are providing two variables:
// $request->child_name_ and $i

要:

dd($request->{'child_name_'.$i});
// makes sure php sees the whole part
// as the name of the property

修改

对于该文件,请替换:

$file = $request->file("child_picture_.$i");

要:

$file = $request->file("child_picture_" . $i);

答案 1 :(得分:0)

对不起,但对于多个文件,您应该使用数组(可维护性,可读性),如下所示:

@for($i=1;$i<=$ticket->children_count;$i++)
<div class="form-group">
  <label for="">Child {{ $i }} Name:</label>
  <input type="text" name="child_names[]" value="" required="" class="form-control">
</div>
<div class="form-group">
   <label for="">Child {{ $i }} Photo:</label>
   <input type="file" name="child_pictures[]" value="" required="">
</div>
@endfor

在你的控制器中检查请求是否有这样的文件:

if ($request->hasFile('child_pictures')) {
    $files = $request->file('child_pictures');

    foreach($files as $file) {
        var_dump($file); // dd() stops further executing!
    }
}