提问者:小点点

Laravel 5.6:检查文件是否存在


因此,我在laravel中创建用户配置文件,并希望在用户未上传其自己的配置文件图像时显示一个通用配置文件图像,条件如下:

@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是文件存在的条件,但我面临两个问题,这是我在其他解决方案中没有发现的:

>

  • 文件存在于存储之外的路径中。(

    我想在不使用存储或文件外观的情况下完成它。

    注意:对文件系统进行了以下更改。php

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

    编辑:这个问题与这里提到的问题类似,但这个解决方案对我不起作用:确定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个答案

    匿名用户

    您应该检查文件是否存在

    @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) }}">
    

    匿名用户

    图像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。