我正在尝试将数组中的多个图像保存到数据库中,但我正在努力解决这个问题。我设法能够将多个图像上传到文件夹而不是数据库。
我的控制器
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)
您正在覆盖$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并且您将恢复您的名称数组!
| 归档时间: |
|
| 查看次数: |
8277 次 |
| 最近记录: |