Don*_*uez 3 php laravel laravel-nova
长话短说
我使用 Laravel Nova 资源成功上传了图像。当我 ssh 进入服务器时,我可以看到文件名,并且可以在临时数据库的相应记录中看到图像路径。然而,诺瓦说,“找不到这张图片。” 它还在我提供图像的页面上显示损坏的图像链接。如何让图像显示在我的暂存 Nova 资源和我的暂存站点中?
更多信息
我已经使用 Laravel Forge 部署了一个临时站点。该站点使用 Laravel Nova 上传图像等。我的目标是将这些图像上传到存储目录,并根据Laravel 文件系统文档,在临时站点上public/storage使用符号链接访问它们。(如果我在本地运行我的应用程序,我可以很好地做到这一点。我可以在 Nova 和我的本地站点上看到该图像。)
当我上传图片时,它成功上传到我的服务器;当我 ssh 进入我的服务器时,我可以看到该文件。此外,它还将文件路径保存在我的临时数据库中:images/TheJournal/Topics/Testing/Test2.jpg.
问题的详细信息
当我尝试从 Nova 管理面板查看该文件时,我得到:“找不到此图像。” 单击“此图像”,我将进入一个空白页面,搜索栏中包含以下网址: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">
Run Code Online (Sandbox Code Playgroud)
文件系统.php
我正在尝试使用“公共”
'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',
],
Run Code Online (Sandbox Code Playgroud)
Article.php:Nova 资源
这是我使用的Nova资源字段。
Avatar::make("Square Pic", "MainPic")
->disk("public")
->path("/images/TheJournal/Topics/Testing")
->storeAs(function (Request $request) { return $request->MainPic->getClientOriginalName(); })
->deletable()
->hideWhenCreating(),
Run Code Online (Sandbox Code Playgroud)
吉蒂诺尔
目前它位于我的 gitignore 文件中。也许这与问题有关?我不这么认为,因为当我 ssh 进入我的服务器时,我可以看到 /public/storage/ 中的存储目录。当我尝试将目录更改为 /public/storage/ 时,它显示:-bash: cd: storage: No such file or directory
/public/hot
/public/storage
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
删除我的public/storage/并使用重新创建它php artisan storage:link
在我的Article.php Nova 资源中替换disk("public")为。这将图像保存到我的 public/images 目录而不是. 这使得我的 Nova 管理面板和网页能够显示正确的图像。没有404错误。disk("Root")storage/app/images/
在我的Vue.js 模板上替换'/storage/'为'/'
有人知道会发生什么吗?
小智 7
我遇到了同样的问题,并且能够通过运行命令来解决它
php artisan storage:link
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请确保在应用程序目录根目录的文件APP_URL中设置正确。.env
APP_URL=http://localhost
Run Code Online (Sandbox Code Playgroud)