如何从本地存储中获取阵列图像到刀片文件

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-&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,因为您不知道原始文件名 【参考方案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";

?>

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

【讨论】:

以上是关于如何从本地存储中获取阵列图像到刀片文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像从本地存储上传到云端?

Javascript 显示来自本地存储阵列的数据问题

如何在 iPhone 设备中本地保存图像和数据

Cordova / Javascript 将图像从 URL 复制到本地存储中

android如何将图像从互联网下载到本地存储?

如何从 HDFS 获取和查看 oracle BLOB (Image) 数据到本地系统?