Успешная загрузка изображения с ресурсом Nova, но получение «Это изображение не может быть найдено» на том же ресурсе - PullRequest
0 голосов
/ 04 июня 2019

TL; DR

Я успешно загрузил изображение с помощью ресурса Laravel Nova. Я могу видеть имя файла, когда я ssh на моем сервере, и я вижу путь к изображению в соответствующей записи в моей промежуточной базе данных. Однако Нова говорит: «Это изображение не может быть найдено». Он также отображает неработающую ссылку на изображение на странице, где я передаю изображение. Как заставить изображение отображаться на моем промежуточном ресурсе Nova и моем промежуточном сайте?

Дополнительная информация

Я развернул промежуточный сайт с помощью Laravel Forge. Этот сайт использует Laravel Nova для загрузки изображений и т. Д. Моя цель - загрузить эти изображения в каталог хранилища и получить к ним доступ из public/storage, используя символическую ссылку для Документация файловой системы Laravel , на промежуточном сайте. (Я могу сделать это очень хорошо, если я запускаю свое приложение локально. Я вижу изображение в Nova и на своем локальном сайте.)

Когда я загружаю изображение, оно успешно загружается на мой сервер; Я могу увидеть файл, когда я ssh на моем сервере. Кроме того, он сохраняет путь к файлу в моей промежуточной базе данных: images/TheJournal/Topics/Testing/Test2.jpg.

Проблема в деталях

Когда я пытаюсь посмотреть файл из моей админ-панели Nova, я получаю: «Это изображение не найдено». Нажав на «Это изображение», я попадаю на пустую страницу со следующим URL в строке поиска: myDomainName/storage/images/TheJournal/Topics/Testing/Test2.jpg. Опять же, если я захожу по ssh на свой сервер, я вижу, что файл действительно загружен на мой сервер. Кроме того, я получаю сообщение об ошибке 404 на странице, на которую загружаю изображение (см. Шаблон Vue.js ниже).

Шаблон Vue.js

Я пытаюсь загрузить изображение на интерфейс, используя Article.MainPic, который содержит следующий путь: "images / TheJournal / Topics / Testing / Test2.jpg". Я получаю ошибку 404, делающую это таким образом.

<img class="item" :alt="Article.Title" :src="'/storage/' + Article.MainPic">

filesystems.php

Я пытаюсь использовать 'public'

'local' => [
   'driver' => 'local', 
   'root' => storage_path('app'), 
 ],
'public' => [ 
    'driver' => 'local', 
    'root' => storage_path('app/public'), 
    'url' => env('APP_URL')."/storage", 
    'visibility' => 'public', 
 ],
'Root' => [ 
    'driver' => 'local', 
    'root' => public_path(), 
    'url' => env('APP_URL'), 
    'visibility' => 'public', 
 ],

Article.php: Nova Resource

Это поле ресурса Nova, которое я использую.

Avatar::make("Square Pic", "MainPic")
->disk("public")
->path("/images/TheJournal/Topics/Testing") 
->storeAs(function (Request $request) { return $request->MainPic->getClientOriginalName(); }) 
->deletable() 
->hideWhenCreating(),

Gitignore

Это в настоящее время в моем файле gitignore. Может быть, это как-то связано с проблемой? Я так не думаю, потому что я вижу каталог хранилища в / public / storage /, когда захожу по ssh на свой сервер. Когда я пытаюсь изменить каталог на / public / storage /, он говорит: -bash: cd: storage: No such file or directory

/public/hot
/public/storage

Вещи, которые я пробовал:

  • Удаление моего public/storage/ и воссоздание его с помощью php artisan storage:link

  • Замена disk("public") на disk("Root") в моем Article.php Nova Ресурс. Это сохранило изображение в моей общедоступной директории / images storage/app/images/. Это позволило моей панели администратора Nova и веб-странице для отображения правильного изображения. Нет ошибки 404.

  • Замена '/storage/' на '/' на моем шаблоне Vue.js

Кто-нибудь знает, что может происходить?

...