Laravel 5.7上传到公用文件夹不起作用

时间:2019-02-11 20:01:08

标签: php laravel

我正在尝试将图像上传到链接到Laravel的公用文件夹的storage/app/public/文件夹中。我的filesystems.php的配置方式如下:

'default' => env('FILESYSTEM_DRIVER', 'public')
//rest of the code
        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

然后在我的控制器上,上传图片:

$file = $request->hasFile('imagem');
$file = $request->file('imagem')->isValid();

$upload = $request->imagem->store('instituicoes');

我希望将文件上传到此路径storage/app/public/instituicoes,但是当我使用此代码时,Laravel在storage/app文件夹而不是在我的storage/app/public/处创建了'instituicoes'文件夹定义为存储路径。 Laravel Folders

2 个答案:

答案 0 :(得分:0)

来自https://laravel.com/docs/5.7/filesystem

公用磁盘用于将要公开访问的文件。默认情况下,公用磁盘使用本地驱动程序,并将这些文件存储在storage / app / public中。为了使它们可以从网上访问,您应该创建一个从public / storage到storage / app / public的符号链接。

要创建符号链接,可以使用storage:link Artisan命令:

php artisan storage:link

答案 1 :(得分:0)

由于默认磁盘正在使用FILESYSTEM_DRIVER环境变量,因此请确保将变量值设置为public作为默认磁盘。看来它可能正在使用您的local磁盘。

您也可以尝试更改此内容:

$upload = $request->imagem->store('instituicoes');

对此:

$upload = $request->imagem->store('instituicoes', 'public');

强制使用public磁盘而不是默认磁盘。