【问题标题】: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-&gt;input('surf_date').'_'.$request-&gt;input('user_id').'_'.$image-&gt;getClientOriginalName()。你知道两个部分 surf_dateuser_id 。因此,您需要从 public/uploads/ 检索文件,然后对具有模式 $post-&gt;surf_date . '_' . $post-&gt;user_id 的文件名进行 preg_match,因为您不知道原始文件名

标签: php laravel controller laravel-blade laravel-8


【解决方案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";
}
?>

希望我的解决方案能解决你的问题

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2021-11-30
    • 2021-09-21
    • 1970-01-01
    相关资源
    最近更新 更多