应用程序/公共(laravel)中的图像未显示在Heroku应用程序中

tf7tbtn2  于 2022-12-13  发布在  其他
关注(0)|答案(6)|浏览(108)

我在laravel中有一个项目,其中一个部分上传图像到服务器。图像通过使用文件存储保存在/ storage / app / public文件夹中。在本地工作正常,图像看起来很好,但当我上传项目到heroku时,图像看不到。即使在heroku中运行命令“php artisan storage:链接”
为什么我看不到图像?我不想用AWS S3来做这个。我会错过什么呢?
谢谢你,谢谢你

nom7f22z

nom7f22z1#

另外,您也可以将图片上传到公共文件夹而不是存储文件夹,这样您就不会遇到上述问题。
更改自:

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

变更为:

'public' => [
            'driver' => 'local',
            'root' => public_path(),
            'url' => env('APP_URL').'/public',
            'visibility' => 'public',
        ],

您可以存储文件,以便:

$pathToFile = Storage::disk('public')->put('uploads/', $file);

现在您可以将$pathToFile变量插入数据库!

wfypjpf4

wfypjpf42#

在composer.json中添加:
“安装后命令”:[“ln -sr存储/应用程序/公共公共/存储”]、

omhiaaxx

omhiaaxx3#

Heroku没有文件存储功能,所以如果你想把它用在服务器上,你需要找到另一种存储文件的方法。

gupuwyp2

gupuwyp24#

我所做的对我有用的事情:
在composer.json中添加:
"post-install-cmd": [ "ln -sr storage/app/public public/storage" ],(如果在上面的命令后还有其他行,请不要忘记逗号,)但是您应该在脚本部分添加上面的行。

wqsoz72f

wqsoz72f5#

此外,您还需要运行以下命令:

php artisan storage:link

在运行此命令之前,请检查存储文件夹是否已存在或不在公用文件夹中。如果存在,请将其重命名为storage-bk并运行此命令。这样,它将创建新的快捷方式文件夹存储(storage/app/public)。

v1l68za4

v1l68za46#

这对我很有效:您可以将添加到Procfile中的命令行。worker: php artisan storage:link
添加后,请再次将您的项目推到Heroku。

相关问题