how to get array images from local storage to blade files

so i stored array of images while created a form, but i store these in local public folder not in database.

//controller

 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);
                }
            }
        
        
    }

while storing it i append user_id and surf_date with it so that it can retreive using this info now i am showing these data in another view (show.blade)

//controller for show data

public function show($id)
    {   
            $post=Post::findOrFail($id);
            $spiner = ($post) ? true : false;
            return view('admin/post/show', compact('post','spiner'));  
    }

//show view blade

<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>

but i also want to show images in view that stored locally and i don't know how can i achieve that i am new in laravel please help me. thanks in advance

1 answer

  • answered 2020-11-25 08:48 azibom

    Hi
    I think the best idea is using the database to store the data of the images but if you want to do not use the database you can use the "glob" function in php
    For example you can save the images with this pattern

    $userId . "_" . $date . $originalFileName
    

    Now it you want to get one specific user image in the specific date you can do it (for example your images are in /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";
    }
    ?>
    
    

    I hope my solution solves your problem