php - 使用 Nova 资源成功上传图像,但在同一资源中收到 "This image could not be found"

标签 php laravel laravel-nova

长话短说

我使用 Laravel Nova 资源成功上传了一张图片。当我 ssh 进入我的服务器时,我可以看到文件名,我可以在我的登台数据库的相应记录中看到图像路径。然而,Nova 说,“找不到这张图片。”它还在我提供图像的页面上显示损坏的图像链接。 如何让图像显示在我的暂存 Nova 资源和暂存站点中?

更多信息

我已经使用 Laravel Forge 部署了一个暂存站点。该网站使用 Laravel Nova 上传图片等。我的目标是将这些图片上传到存储目录,并使用符号链接(symbolic link)从 public/storage 访问它们,根据 Laravel Filesystem Documentation , 在暂存站点上。 (如果我在本地运行我的应用程序,我可以完美地做到这一点。我可以在 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">

文件系统.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 资源

这是我用的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 文件中。也许这与问题有关?我不这么认为,因为当我 ssh 进入我的服务器时,我可以在/public/storage/中看到存储目录。当我尝试将目录更改为/public/storage/时,它显示:-bash: cd: storage: No such file or directory

/public/hot
/public/storage

我尝试过的事情:

  • 删除我的 public/storage/ 并使用 php artisan storage:link

    重新创建它
  • 在我的 Article.php Nova 中用 disk("Root") 替换 disk("public") 资源。这将图像保存到我的 public/images 目录中 storage/app/images/。这允许我的 Nova 管理面板和网页 以显示正确的图像。没有 404 错误。

  • 在我的 Vue.js 模板

    上用 '/' 替换 '/storage/'

有人知道会发生什么吗?

最佳答案

我遇到了同样的问题,通过运行命令能够解决它

php artisan storage:link

如果这不起作用,请确保在应用程序根目录中的 .env 文件中正确设置了 APP_URL

APP_URL=http://localhost

关于php - 使用 Nova 资源成功上传图像,但在同一资源中收到 "This image could not be found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56435871/

相关文章:

mysql - 将查询从 mysql 转换为 php laravel?

Laravel Nova - 看不到验证错误消息

php - Paypal API : Exception: 401 when accessing https://api. sandbox.paypal.com/v1/oauth2/token

php-mysql 回滚替代函数

php - 检查 Session 是否被垃圾收集器删除

php - Laravel PDO 找不到驱动程序

Laravel - whereHas() 中关系的最新记录

laravel-nova - Laravel Nova 更改字体系列

php - 即使我输入了正确的凭据,错误仍然是用户名或密码不正确