Laravel - 无法找到图像,尽管它位于磁盘中。即使输入网址也无法访问它

时间:2017-10-17 14:04:33

标签: php laravel laravel-5 laravel-5.5

所以我在Laravel中构建一个应用程序,这是我第一次自己使用框架而没有任何互联网,所以我在某些方面遇到了很多麻烦。其中之一就是我上传的图像似乎不可能被laravel查找和服务,即使它们被上传到文件系统中的正确位置。我正在与Valet合作开发当地环境。另外,我已经按照文档的说明在存储和公共之间建立了符号链接。

以下是上传图片的代码:

$fileDir = 'public/enterprise/main';
$tempImage = request()->file('main_img');
$newImage = $tempImage->store($fileDir);

以下是我试图称之为:

<div class="col-xs-8"><img src="{{ asset('storage/app/'.$enterprise->main_img) }}"></div>

网址laravel似乎试图达到这个目标:

http://vbi.dev/storage/app/public/enterprise/main/MgfjPKWL8DIFgHDrMccOCsOkZZH0QmFAsput07n5.jpeg

最后,我的config / filesystems文件:

<?php
return [
    'default' => env('FILESYSTEM_DRIVER', 'local'),
    'cloud' => env('FILESYSTEM_CLOUD', 's3'),
    'disks' => [
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL') . '/storage',
            'visibility' => 'public',
        ],
        'img' => [
            'driver' => 'local',
            'root' => storage_path('images')
        ],
        's3' => [
            'driver' => 's3',
            'key' => env('AWS_KEY'),
            'secret' => env('AWS_SECRET'),
            'region' => env('AWS_REGION'),
            'bucket' => env('AWS_BUCKET'),
        ],
    ],
];

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

您应该只将文件存放在公共目录中,而不包括public,您可以在第二个参数中指定一个磁盘,如下所示:

$fileDir = 'enterprise/main';
$tempImage = request()->file('main_img');
$newImage = $tempImage->store($fileDir, 'public');

同样在视图中资产方法会自动为您添加公用文件夹的路径:

<div class="col-xs-8"><img src="{{ asset($enterprise->main_img) }}"></div>