Laravel 8, URL-адрес изображения, повторно полученный из базы данных, не возвращает изображение

#laravel

#laravel

Вопрос:

Я боролся с этой проблемой уже несколько часов. Моя проблема в том, что у меня есть URL-адрес изображения, сохраненный в моей базе данных, и когда я его извлекаю, я пытаюсь отобразить его в своем index.blade.php . Странная часть в том, что я использовал тот же код в более старом проекте, и он работал, но я включил более старый проект, и он там тоже больше не работает. Я сделал php artisan storage:link , и из того, что я вижу, ссылка правильная, но изображения отображаются как поврежденные, я искал различные решения, но все это ведет в тупик, потому что URL просто не хочет отображать изображение. URL-адрес изображения сохраняется в этой форме http://127.0.0.1:8000/storage/public/vsX9ihmRknGWLXtNRmxgCXV3ckqhlFoBlyuMoejB.png

Мой index.blade.php тело

   <tbody>
    @foreach($companies as $company)
        <tr>
            <td scope="row">{{$company->id}}</td>
            <td>{{$company->name}}</td>
            <td>{{$company->email}}</td>
            <td><img class="class='img-fluid rounded mb-3 mb-lg-0 ml-md-0" src="{{$company->logo}}"></td>
            <td>{{$company->url}}</td>
            <td>
                <a href="{{route('company.edit', $company->id)}}" class="float-left">
                    <button type="button"
                            class="btn btn-primary mr-2">{{__('Edit')}}</button>
                </a>
                <form action="{{route('company.delete',$company->id)}}" method="POST"
                      class="float-left">
                    {{method_field('DELETE')}}
                    @csrf
                    <button type="submit"
                            class="btn btn-danger btn-sn">{{__('Delete')}}</button>
                </form>
            </td>
        </tr>
    @endforeach
    </tbody>
  

Как я вызываю это из моего Companiescontroller

  public function index(): Renderable
{
    $companies = $this->company->all();

    return view('company.index', compact('companies'));
}
  

Как я сохраняю URL-адрес своего изображения

    public function store(Request $request): RedirectResponse
    {
    $request->validate([
        'name' => 'required',
        'email' => '',
        'logo' => 'dimensions:min_width:100,min_height:100',
        'url' => ''
    ]);
    $parameters = $request->all();
    if ($request->logo !== null) {
        $image = $request->logo->store('public');
        $parameters['logo'] = URL::to('/') . '/storage/' . $image;
    }
    $this->company->create($parameters);

    return redirect()->route('company.index');
}
  

Я не уверен, достаточно ли этого, но я предполагаю, что это основные части.

Комментарии:

1. По умолчанию php artisan storage:link создайте символическую ссылку с storage/app/public помощью so, переместите изображение из storage/public в storage/app/public . Затем вы можете получить доступ через http://127.0.0.1:8000/storage/vsX9ihmRknGWLXtNRmxgCXV3ckqhlFoBlyuMoejB.png

2. Спасибо, вы спасатель

Ответ №1:

По умолчанию php artisan storage:link создайте символическую ссылку с storage/app/public помощью so, переместите изображение из storage/public в storage/app/public . Затем вы можете получить доступ через http://127.0.0.1:8000/storage/vsX9ihmRknGWLXtNRmxgCXV3ckqhlFoBlyuMoejB.png