【问题标题】:Display array format image from database in laravel在 laravel 中显示数据库中的数组格式图像
【发布时间】:2021-04-25 12:32:23
【问题描述】:

我试图创建一个数据库来存储图像。它存储该图像的 URL 并且插入工作正常。但它以数组格式保存为["light.jpg"]。现在我想显示存储在数据库中的图像,但它只显示图像图标而不显示图像。图片存放在公用文件夹内的图片文件夹中。

下面附上我的代码:

表单控制器:

public function store(Request $request)
{

    $this->validate($request, [
            'filename' => 'required',
            'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
    ]);

    if($request->hasfile('filename'))
    {
        foreach($request->file('filename') as $image)
        {
            $name=$image->getClientOriginalName();
            $image->move(public_path().'/images/', $name);  
            $data[] = $name;  
        }
     }

     $form= new Form();
     $form->filename=json_encode($data);
     $form->save();
     return back()->with('success', 'Your images has been successfully');
 }
 public function show()
 {
    $users = DB::select('select * from forms');
    return view('display',['users'=>$users]);
 }

插入页面

<form method="post" action="{{url('form')}}" enctype="multipart/form-data">
  {{csrf_field()}}

        <div class="input-group control-group increment" >
          <input type="file" name="filename[]" class="form-control">
          <div class="input-group-btn"> 
            <button class="btn btn-success" type="button"><i class="glyphicon glyphicon-plus"></i>Add</button>
          </div>
        </div>
        <div class="clone hide">
          <div class="control-group input-group" style="margin-top:10px">
            <input type="file" name="filename[]" class="form-control">
            <div class="input-group-btn"> 
              <button class="btn btn-danger" type="button"><i class="glyphicon glyphicon-remove"></i> Remove</button>
            </div>
          </div>
        </div>

        <button type="submit" class="btn btn-primary" style="margin-top:10px">Submit</button>

  </form>        
  </div>


<script type="text/javascript">      
    $(document).ready(function() {    
      $(".btn-success").click(function(){ 
          var html = $(".clone").html();
          $(".increment").after(html);
      });

      $("body").on("click",".btn-danger",function(){ 
          $(this).parents(".control-group").remove();
      });    
    });
</script>

显示页面:

 @foreach ($users as $user)
     <img src="{{ url('images/$user->filename') }}"/>
 @endforeach

【问题讨论】:

    标签: php html laravel


    【解决方案1】:
    @foreach ($users as $user)
     @php $images = json_decode($user->filename,true); @endphp
       @if(is_array($images) && !empty($images))
       @foreach ($images as $image)
         <img src="{{ url('images/'.$image) }}"/>
       @endforeach
       @endif
    @endforeach
    

    如果您将图像保存为 json 格式,这就是方法。所以我已经把 if 条件现在也检查了

    【讨论】:

    • Tq 的答案@Hamelraj .. 但它显示为 foreach() 提供的参数无效:(
    • @AlmiraEnterprise 我已经把如果条件现在也检查了
    • same..它不显示图像
    • 在 foreach @foreach ($users as $user) 之后请关注这个 {{ dd($user) }} 并告诉我你会得到什么
    • {#205 ▼ +"id": 2 +"filename": "["download-1.jpg"]" +"created_at": "2018-11-05 02:58:34 " +"updated_at": "2018-11-05 02:58:34" }
    【解决方案2】:

    在刀片模板中,您在 img src 中插入 json 格式,但您应该插入单个文件名。您可以看到您的文件名存储为 json,因此您需要解码 json 格式并为每个文件名运行 foreach,如下所示。

    @foreach ($users as $user)
       @php $filenames = json_decode($user->filename); @endphp
       //filenames are decoded now and you can use the foreach loop just like below
       @foreach ($filenames as $singlefilename)    
         <img src="{{ url('images/' . $singlefilename) }}"/>
       @endforeach
    
    @endforeach
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 2019-10-29
      • 2020-08-19
      • 2020-05-19
      • 2018-03-31
      相关资源
      最近更新 更多