【问题标题】:display images from database to blade in laravel在 laravel 中显示从数据库到刀片的图像
【发布时间】:2020-08-19 20:05:03
【问题描述】:

我有一个数据库,其中图像存储在表格行中,如下所示:

name(string)        "name"
sometext(string)    "some description"
filesnames(string)  image1.jpeg|image2.jpeg 

image1 和 image2 存放在“public/storage/image”文件夹中

public function store(Request $request)
{
    $data = request()->validate([
        'name' => 'required',
        'sometext' => '',
        'testImages' => '',
        'testImages' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    $images = array();
    
    if($files = $request->file('testImages')){
        foreach($files as $file){
            $name = $file->getClientOriginalName();
            $file->move('image', $name);
            $images[] = $name;
        }
    }

    auth()->user()->tests()->create([
        'name' => $data['name'],
        'sometext' => $data['sometext'],
        'filenames' => implode("|", $images),
    ]);
}

public function show ($id)
{
    $tests = Tests::findorfail($id);  //get row data from table with ID
    return view('test.show-report', compact('tests'));  //return data to blade
}

在刀片中,我可以通过 $tests->name$tests->description 成功获取数据。

我无法弄清楚如何显示“文件名”刀片中的图像。

【问题讨论】:

  • 数据库单元格中的确切内容是什么?图像1.jpeg?你是怎么上传的?
  • 我在描述中也更新了商店功能

标签: php laravel laravel-blade


【解决方案1】:

你可以这样做:

@foreach(explode('|',$tests->filenames) as $fileName)
    <img src="/storage/image/{{$fileName}}"/>
@endforeach

【讨论】:

  • 没问题,把它标记为答案,这样对别人也有帮助
【解决方案2】:

如果图像名称以正确的扩展名正确存储在数据库中,那么您在刀片视图中将需要以下内容:

  <img src="/storage/image/{{$tests->NAME_OF_COLUMN_IN_DB}}" />

只需将“NAME_OF_COLUMN_IN_DB”替换为您在数据库中存储图像名称的列名。

【讨论】:

  • NAME_OF_COLUMN_DB 有多个图像名称,例如 image.jpeg|image2.jpeg(用 | 分隔)你能帮我如何在刀片中显示两个图像。
  • 如果您在一行中存储多个图像名称,则无法将它们存储为文本并将它们检索到您的视图中,您需要将一个图像名称存储在一个数据库行中或存储所有图像名称为 JSON,有不同的处理方式。
【解决方案3】:

试试这样 &lt;img src="/storage/image/{{ $tests['filenames'] }}" height="30px" width="30px" /&gt; 希望它会有所帮助: 在这种情况下: 在控制器中使用 explode() 到 $tests->filenames 创建一个数组,然后像这样循环它

@foreach(json_decode($tests->filenames, true) as $images)
     <img src="/storage/image/{{ $images }}" height="30px" width="30px" />
@endforeach

【讨论】:

    【解决方案4】:

    这样使用

    <img src="{{ url('') }}/storage/image/{{$tests-> filenames}}">
    

    【讨论】:

      【解决方案5】:

      在你的模型中写一个这样的函数。假设你在用户模型中。

          public function getImage()
      {
          return isset($this->image) && $this->image ? asset('userPhoto/'.$this->image): asset("dist/img/user2-160x160.jpg");
      }
      

      现在像这样检索刀片文件中的图像-

      <a href="{{asset('userPhoto/'.$user->image)}}"target="_blank">
      <img src="{{ $user->getImage() }}"width="50"></a>
      

      【讨论】:

        【解决方案6】:

        您可以按照以下步骤操作

        <img src="{{ public_path('storage\image') }}{{ $tests->filenames }}" alt=""/>
        

        使用以下代码分隔图片的名称

        $img = exploade('|', $tests->filenames);
        dump($img);
        

        【讨论】:

        • 请检查您的代码。为什么路径名中有反斜杠? exploade 是做什么的?
        • 获取网址。并 exploade 将字符串转换为数组。示例 "img1.jpg|img2.png" 我如何分隔这个字符串?
        猜你喜欢
        • 2021-01-07
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 2021-10-17
        • 2020-09-13
        • 2016-09-15
        • 2023-01-08
        • 1970-01-01
        相关资源
        最近更新 更多