app / public(laravel)中的图片未在Heroku应用中显示

时间:2017-08-07 17:11:41

标签: php laravel heroku amazon-s3 file-storage

我在laravel中有一个项目,其中一个部分将图像上传到服务器。使用文件存储并在/ storage / app / public文件夹中保存图像。 在本地工作正常,图像看起来不错,但是当我将项目上传到heroku时,图像看不到。 即使在heroku中运行命令" php artisan storage:link"

为什么我看不到图像?我不想为此使用AWS S3。 我能错过什么?

谢谢..

5 个答案:

答案 0 :(得分:1)

Heroku没有文件存储空间。因此,如果您要将其用于服务器,则需要找出另一种存储文件的方法。

答案 1 :(得分:0)

在你的composer.json中添加:

" post-install-cmd":[     " ln -sr storage / app / public public / storage" ],

答案 2 :(得分:0)

您还可以将图像上传到公用文件夹而不是存储文件夹(通过这种方式,您将不会遇到上述问题)。 为此,您需要在app/filesystem.php

中更改配置

更改

'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变量插入数据库了!

答案 3 :(得分:0)

在您的composer.json中添加:

"post-install-cmd": [
            "ln -sr storage/app/public public/storage"
        ]

答案 4 :(得分:0)

我所做的对我有用:

在你的 composer.json 中添加:

"post-install-cmd": [ "ln -sr storage/app/public public/storage" ],(如果上面的命令后面还有其他行,请不要忘记逗号 ,)但是你应该在脚本部分添加上面的行。enter image description here