请帮助我显示以数组形式存储在数据库中的图像 我的控制器: (文件名是我在数据库中的图像列名称)
公共功能存储(请求$ request) {
$this->validate($request, [
'filename' => 'required',
'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
// Start multiple image upload code
if($request->hasfile('filename'))
{
foreach($request->file('filename') as $image)
{
$name=$image->getClientOriginalName();
$image->move(public_path().'/images/', $name);
$data[] = $name;
}
}
// End multiple image upload code
$houses= new House();
$houses->division = $request->input('division');
$houses->city = $request->input('city');
$houses->area = $request->input('area');
$houses->owner_name = $request->input('owner_name');
$houses->house_name = $request->input('house_name');
$houses->type = $request->input('type');
$houses->from = $request->input('from');
$houses->rent = $request->input('rent');
$houses->phone = $request->input('phone');
$houses->address = $request->input('address');
$houses->description = $request->input('description');
$houses->filename=json_encode($data); **// This for image upload**
$houses->save();
return back()->with('success', 'Your House has been successfully');
}
答案 0 :(得分:0)
如果要检索,则显示存储为数组的图像,我建议将文件名属性转换为模型中的json / array。
您可以在House模型中执行以下操作:
class House extends Model
{
protected $casts = [
'filename' => 'array',
];
}
要在视图中显示它,可以遍历转换数组:
@foreach($house->filename as $image)
<img src="{{ url('link/to/assets/') . $image }}"
@endforeach
在文档中查看有关投射的更多信息:
https://laravel.com/docs/5.7/eloquent-mutators#array-and-json-casting
图片上传的一个侧面,您可能希望为上传的文件指定一个唯一的名称,而不是使用用户的文件名,这样,如果用户两次上传相同名称的文档,就不会有冲突。
Laravel通过https://laravel.com/docs/5.7/requests#storing-uploaded-files的store()
方法为您完成所有工作。如果愿意,可以使用storeAs()
创建自己的名称。
答案 1 :(得分:0)
第一个数组将模型中的filename
列强制转换。有关更多信息:Array & JSON Casting
protected $casts = [
'filename' => 'array',
];
之后,每当您从House模型中获取文件名时,laravel都会自动将json数据转换为数组。遍历数组并显示图像。
$house = House::find(1);
foreach($house->filename as $filename) {
echo public_path().'/images/', $filename;
}