Laravel 5.6:检查文件是否存在

3

我正在使用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是文件存在条件的地方,但我面临两个问题,在其他解决方案中没有找到:

  1. 该文件存在于存储之外的路径中。(它存在于公共文件夹中)

  2. 我想在不使用存储或文件fasades的情况下进行操作。

注:filesystems.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

@if(is_file('/path/to/file.ext')) 这个怎么样? - Tpojka
我曾经用两个由类名触发的JavaScript函数做过类似的事情。如果您需要,我可以将它们发布出来。但我不会按照您的具体需求重新构建它们。首先,图片作为常规HTML请求加载。如果失败,则触发JS。您可以查看多少个地方以查找并显示图片。在搜索时,它会显示一个字体awesome加载图标。 - Dimitri Mostrey
我不知道图像存储在系统中的位置。这是你必须在保存/上传图像的方法中检查的内容。只需使用它即可。毕竟,它只是一个字符串。 - Tpojka
@Tpojka,这个方法可行。如果您将您的评论作为答案添加,我会将其标记为正确答案。 - Hammadr097
已添加。请检查是否有效。不过我没有测试过。 - Tpojka
2个回答

11

你应该检查文件是否存在

@if(is_file('/path/to/file.ext'))
    // code
@else
    // code
@endif
你可以使用 Laravel 帮助函数,例如:

您可以使用Laravel帮助程序,例如:

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

1
它确实有效,我已经将可行的解决方案添加到我的问题中了,非常感谢。 - Hammadr097

-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'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接