在 Laravel 中保存多个图像

use*_*193 1 laravel laravel-5

我正在尝试将数组中的多个图像保存到数据库中,但我正在努力解决这个问题。我设法能够将多个图像上传到文件夹而不是数据库。

我的控制器

public function store(Request $request)
{

    $content = new Content();

    $request->validate($this->getRules());

    $content->fill($this->getSafeInput($request));

    if($request->hasFile('image'))
    {
        foreach($request->file('image') as $image)
        {
            $destinationPath = 'content_images/';
            $filename = $image->getClientOriginalName();
            $image->move($destinationPath, $filename);
            $content->image = $filename;

        }

    }

    $content->save();

    return redirect()->route('content.index');
}
Run Code Online (Sandbox Code Playgroud)

我的表格

<div class="content-form">
    {{ Form::open(array('route' => 'content.store', 'method' => 'post','files'=>'true' )) }}
        {{ csrf_field() }}

        <div class="form-group">
            <label for="title">Title</label>
            <input type="text" id="title" class="form-control" name="title">
        </div>

        <div class="form-group">
            <input type="file" name="image[]" multiple="multiple">
        </div>

        <input type="submit" class="btn btn-primary" value="Submit"></input>
    {{ Form::close() }}
</div>
Run Code Online (Sandbox Code Playgroud)

Sap*_*aik 5

您正在覆盖$content->image每个图像保存的值, 因此最后您$content->image将只有最后一个图像的名称。

这应该有效:

if($request->hasFile('image'))
{
    $names = [];
    foreach($request->file('image') as $image)
    {
        $destinationPath = 'content_images/';
        $filename = $image->getClientOriginalName();
        $image->move($destinationPath, $filename);
        array_push($names, $filename);          

    }
    $content->image = json_encode($names)
}
Run Code Online (Sandbox Code Playgroud)

这里图像名称最初存储在一个数组中,然后该数组以json格式保存到 db 中。以便您以后可以通过这样做来访问它们,json_decode并且您将恢复您的名称数组!