Laravel 5.6:检查文件是否存在

时间:2018-08-05 10:01:17

标签: php laravel filesystems storage

因此,我要在laravel中创建用户个人资料,如果用户未上传具有以下if / else条件的他/她自己的个人资料图片,则希望显示通用个人资料图片:

@if(false)
    <img src="img/uploads/avatars/{{$user->Uname}}" class="img-thumbnail" alt="{{$user->Uname}}'s Profile Pic">
@else
    <img src="img/uploads/avatars/{{$user->avatar}}" class="img-thumbnail" alt="{{$user->Uname}}'s Profile Pic">
@endif

我需要检查文件是否与用户的用户名同名(在上面指定的位置上载创建具有该名称的文件)。false是文件存在的条件,但我面临着其他解决方案中找不到的2个问题:

  1. 文件存在于存储外部的路径中。 (公开存在 文件夹)

  2. 我想在不使用存储或文件外观的情况下做到这一点。

注意:对filesystems.php进行了以下更改

'local' => [
            'driver' => 'local',
            'root' => storage_path('../public/img/uploads/'),
        ]

编辑:问题类似于此处提到的问题,但该解决方案对我不起作用:Determining If a File Exists in Laravel 5

编辑#2: 最终工作代码:

@if(is_file("img/uploads/avatars/{$user->Uname}"))
<img src="img/uploads/avatars/{{$user->Uname}}" class="img-thumbnail" alt="{{$user->Uname}}'s Profile Pic">
@else
<img src="img/uploads/avatars/default.jpg" class="img-thumbnail" alt="{{$user->Uname}}'s Profile Pic">
@endif

2 个答案:

答案 0 :(得分:2)

您应该检查文件是否存在

@if(is_file('/path/to/file.ext'))
    // code
@else
    // code
@endif

您可以使用laravel帮助器,例如:

@if(is_file(public_path('img/uploads/avatars/' . $user->Uname)))
    //<img src="{{ asset('img/uploads/avatars' . $user->Uname) }}">

答案 1 :(得分:-1)

您的图片src中没有文件扩展名。

@if(file_exists('img/uploads/avatars/'.$user->Uname.'png')) 
  <img src="img/uploads/avatars/{{$user->Uname}}.png" class="img-thumbnail" alt="{{$user->Uname}}'s Profile Pic">
@else
    <img src="img/uploads/avatars/{{$user->avatar}}.png" class="img-thumbnail" alt="{{$user->Uname}}'s Profile Pic">
@endif

根据需要使用“ .png”或“ .jpg”。