我试图将数组中的多个图像保存到数据库中,但我正在努力解决这个问题。我设法能够将多个图像上传到文件夹而不是数据库。
我的控制器
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');
}
我的表格
<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>
答案 0 :(得分:2)
您在每个图片保存上覆盖了$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)
}
此处图像名称最初存储在一个数组中,稍后该数组将以json
格式保存到db中。这样你以后可以通过json_decode
访问它们,然后你就可以恢复你的名字了!
答案 1 :(得分:0)
如果要保存由&#39;;&#39;分隔的图像的路线?你可以做点什么
public function store(Request $request)
{
$content = new Content();
$request->validate($this->getRules());
$content->fill($this->getSafeInput($request));
$allImages = null;
if($request->hasFile('image'))
{
foreach($request->file('image') as $image)
{
$destinationPath = 'content_images/';
$filename = $image->getClientOriginalName();
$image->move($destinationPath, $filename);
$fullPath = $destinationPath . $filename;
$allImages .= $allImages == null ? $fullPath : ';' . $fullPath;
}
$content->image = $allImages;
}
$content->save();
return redirect()->route('content.index');
}
这应该使$allImages
成为保存图像的每个路径的字符串,然后将其全部保存在Content
模型中。