提问者:小点点

确定Laravel 5中是否存在文件


目标:如果文件存在,加载文件,否则加载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存在。

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


共3个答案

匿名用户

尽可能减少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="">

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

匿名用户

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

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

匿名用户

解决方案

      @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