确定文件是否存在于 Laravel 5 中

2022-08-30 14:39:20

目标 :如果文件存在,请加载该文件,否则加载 .default.png


我试过了

  @if(file_exists(public_path().'/images/photos/account/{{Auth::user()->account_id}}.png'))
    <img src="/images/photos/account/{{Auth::user()->account_id}}.png" alt="">
  @else
    <img src="/images/photos/account/default.png" alt="">
  @endif

结果

它一直加载我的默认图像,而我100%确定它存在。1002.png

如何正确检查该文件是否存在?


答案 1

尽可能尝试减少语句的数量。例如,我会执行以下操作:if

// User Model
public function photo()
{
    if (file_exists( public_path() . '/images/photos/account/' . $this->account_id . '.png')) {
        return '/images/photos/account/' . $this->account_id .'.png';
    } else {
        return '/images/photos/account/default.png';
    }     
}

// Blade Template
<img src="{!! Auth::user()->photo() !!}" alt="">

使模板更干净,并使用更少的代码。你也可以在这种方法上写一个单元测试来测试你的语句:-)


答案 2

使用“File::”检查操作中是否存在文件,并将 resut 传递给视图

$result = File::exists($myfile);

推荐