使用Nova资源成功上传图片,但在同一资源中收到“找不到该图片”

时间:2019-06-04 00:04:36

标签: php laravel laravel-nova

TL; DR

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

其他信息

我已经使用Laravel Forge部署了一个临时站点。该站点正在使用Laravel Nova上载图像等。我的目标是将这些图像上载到存储目录中,并通过暂存站点上的Laravel Filesystem Documentation使用符号链接从public/storage访问它们。 (如果我在本地运行应用程序,则可以做得很好。可以在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

我正在尝试使用“公开”

'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("public")替换为disk("Root") 资源。而是将图像保存到我的public / images目录中 storage/app/images/中的。这允许我的Nova Admin面板和网页 显示正确的图像。没有404错误。

  • 在我的 Vue.js模板

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

有人知道会发生什么吗?

4 个答案:

答案 0 :(得分:1)

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

x = y

如果这不起作用,请确保在应用程序目录根目录下的php artisan storage:link 文件中正确设置了APP_URL

.env

答案 1 :(得分:1)

如果您使用Laravel Homestead。
从项目的根目录开始:

  1. 删除您之前创建的存储链接:

rm public/storage

  1. 连接到无业游民并从那里创建符号链接:

    vagrant ssh

    cd code

    php artisan storage:link

答案 2 :(得分:0)

链接存储空间后

转到.env并删除http:// localhost 所以你的

APP_URL= 

只是空的

答案 3 :(得分:0)

如果您正在使用Laravel Homestead。 从项目的根目录开始:

  1. 删除先前创建的存储链接:

    rm公共/存储

  2. 连接到无业游民并从那里创建符号链接:

    无用的ssh CD代码 php artisan storage:link