首页 > 解决方案 > 将文件从一台电脑传输到另一台电脑时,图像网址的 Laravel 问题

问题描述

与另一个人一起,我们在 Laravel 开发了一个项目,当那个人将其发送给我时,当我发送项目时,图像不显示,如果它们存储在项目的文件夹中并且数据库中的 url 是正确的再次也有同样的问题。

php artisan storage:link

表示路由已创建。

这是将图像保存在项目中的文件夹和数据库中的 url 运行良好控制器的代码:

   public function store(Request $request)
    {   
        $dataCard=request()->except('_token');

        if($request->hasFile('card_img')){
            $dataCard['card_img']=$request->file('card_img')->store('cards-Img','public');
        }
        carta::insert($dataCard);
        return redirect('cards');

    }

他的图像网址保存如下:cards-Img/H0mopUhgWQTn0N25jx5UZJjBvevP74by4kXbIwvI.jpeg

我显示图像的视图不显示图像,但确实从数据库中加载了 alt 中的名称

@extends('layouts.app')
@section('content')
<div class="container">
@foreach($cards as $card)
<div class="form-group">
<div class="card" style="width: 18rem;">
    <img class="card-img-top img-thumbnail img-fluid" src="{{asset('storage').'/'.$card->card_img}}" alt="{{$card->card_nom}}">
  </div>
</div>
@endforeach

</div>
@endsection

我们不明白发生了什么,我们该如何解决?

标签: laravel

解决方案


我和我的朋友有同样的问题。我不知道如何解决它,但我可以给你一个解决方法!

在 config/filesystems.php 中更改根文件夹路径。

'local' => [
            'driver' => 'local',
            'root' => public_path('storage/'),
        ],

然后在你的控制器中

$dataCard=request()->except('_token');

if($request->hasFile('card_img')){
      $imageName = time().'_CardImg.'.$request->file('card_img')->getClientOriginalExtension();
      $request->file('card_img')->move(public_path().'/storage/cards-Img/', $imageName);
}
carta::insert($imageName);
return redirect('cards');

然后访问您视图上的图像。

@extends('layouts.app')
@section('content')
<div class="container">
@foreach($cards as $card)
<div class="form-group">
<div class="card" style="width: 18rem;">
    <img class="card-img-top img-thumbnail img-fluid" src="{{ asset('storage/cards-Img/'.$card->card_img)}}" alt="{{$card->card_nom}}">
  </div>
</div>
@endforeach

</div>
@endsection

现在所有内容都将保存在公共存储文件夹中。所以这在没有php artisan storage:link命令的情况下有效。我希望你觉得它有用!


推荐阅读