如何从本地存储中获取阵列图像到刀片文件
Posted
技术标签:
【中文标题】如何从本地存储中获取阵列图像到刀片文件【英文标题】:how to get array images from local storage to blade files 【发布时间】: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,因为您不知道原始文件名
【参考方案1】:
嗨 我认为最好的办法是使用数据库来存储图像的数据,但如果你不想使用数据库,你可以使用 php 中的“glob”函数 例如,您可以使用此模式保存图像
$userId . "_" . $date . $originalFileName
现在您想在特定日期获取一张特定的用户图片(例如,您的图片在 /var/www/html/web/public 中)
<?php
$path = "/var/www/html/web/public/";
foreach (glob($path . $userId . "_" . $date" . "*") as $filename)
echo "your file name is : " . $filename . "\n";
?>
希望我的解决方案能解决你的问题
【讨论】:
以上是关于如何从本地存储中获取阵列图像到刀片文件的主要内容,如果未能解决你的问题,请参考以下文章