【发布时间】:2021-03-07 23:47:43
【问题描述】:
所以我在创建表单时存储了图像数组,但我将这些图像存储在本地公用文件夹中而不是数据库中。
//控制器
public function store(Request $request)
{
if($request->hasFile('files'))
{
foreach($request->file('files') as $image)
{
$destinationPath = 'public/uploads/';
$filename = $request->input('surf_date').'_'.$request->input('user_id').'_'.$image->getClientOriginalName();
$image->move($destinationPath, $filename);
}
}
$data = $request->all();
$rules = array(
'post_type' => ['required'],
'user_id' => ['required','numeric'],
'post_text' => ['nullable', 'string', 'max:255'],
'files[]' => ['nullable','image','mimes:jpeg,jpg,png'],
'surf_date' => ['required', 'string'],
);
$validate = Validator::make($data, $rules);
if ($validate->fails()) {
// If validation falis redirect back to register.
return redirect()->back()->withErrors($validate)->withInput();
} else {
//savePost is service for storing data into database
$result = $this->posts->savePost($data,$message);
if($result){
return Redirect::to('admin/post/create')->withSuccess($message);
}else{
return Redirect::to('admin/post/create')->withErrors($message);
}
}
}
在存储它时,我会附加 user_id 和 surf_date 以便它可以使用此信息进行检索 现在我在另一个视图中显示这些数据 (show.blade)
//显示数据的控制器
public function show($id)
{
$post=Post::findOrFail($id);
$spiner = ($post) ? true : false;
return view('admin/post/show', compact('post','spiner'));
}
//显示视图刀片
<p class="text-muted text-md"><b>Post Type : </b> {{ __($post->post_type)}} </p>
<p class="text-muted text-md"><b>Post Text : </b> {{ __($post->post_text)}} </p>
<p class="text-muted text-md"><b>User id : </b> {{ __($post->user_id)}}</p>
<p class="text-muted text-md"><b>Surf Start Date : </b> {{ __($post->surf_start_date)}}</p>
但我也想在本地存储的视图中显示图像,但我不知道如何实现 我是laravel的新手,请帮助我。提前致谢
【问题讨论】:
-
由于您没有存储保存文件的路径,所以会有点麻烦。理想情况下,您应该将图像(存储)的路径存储在数据库列中。您为文件(图像)建立了名称,例如
$request->input('surf_date').'_'.$request->input('user_id').'_'.$image->getClientOriginalName()。你知道两个部分surf_date和user_id。因此,您需要从public/uploads/检索文件,然后对具有模式$post->surf_date . '_' . $post->user_id的文件名进行 preg_match,因为您不知道原始文件名
标签: php laravel controller laravel-blade laravel-8