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

Php 确定Laravel 5中是否存在文件,php,laravel,laravel-5,laravel-5.1,Php,Laravel,Laravel 5,Laravel 5.1,目标:如果文件存在,加载文件,否则加载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="/imag

目标:如果文件存在,加载文件,否则加载
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
@if(文件_存在(public_path()。/images/photos/account/{{Auth::user()->account_id}}.png'))
帐户{u id}}.png“alt=”“>
@否则
@恩迪夫

结果

当我100%确定
1002.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
@if(文件存在(公共路径()。/images/photos/account/'.Auth::user()->account\u id..png'))
帐户{u id}}.png“alt=”“>
@否则
@恩迪夫

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

//用户模型
公众活动照片(
{
如果(文件_存在(public_path()。/images/photos/account/'.$this->account_id.'.png')){
返回“/images/photos/account/”.$this->account_id..png”;
}否则{
返回“/images/photos/account/default.png”;
}     
}
//叶片模板
照片()!!}“alt=”“>

使您的模板更干净,使用的代码更少。您还可以在此方法上编写单元测试,以测试您的语句:-)

将文件的名称保存到数据库中。如果映像路径存在

<?php
$path = "packages/pathoffile/img/media/" . $filename;
$media = isset($media) ? $media : ""; //If media is saved
?>
@if($media == "")
<img src='../packages/defaultimagelocation/assets/img/user.png' />
@else
<img src='../packages/originalmedialocation/img/media{{ $media }}' />
@endif

@如果($media==“”)
@否则
@恩迪夫

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

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

在Laravel 5.5中,您可以在存储外观上使用
exists
方法:

可以使用三元表达式:

$file = ($exists) ? Storage::disk('s3')->get('file.jpg') : 
         Storage::disk('s3')->get('default.jpg');

控件顶部。

您回显
public_path()。/images/photos/account/{{Auth::user()->account_id}的结果.png'
并检查它是否是有效路径。如果是,那么你去看看它是否真的存在。你已经知道它不存在,计算机不会说谎。@RyanVincent:return
false
。你确定你得到了吗?你不可能得到它。我得到了字符串。你是对的。我必须修复我的连接。查看我的解决方案。谢谢你的帮助您的评论。@i如果解决方案对您有效,我将欣然接受。
public\u path(“/images/photos/account/{$this->account\u id}.png”)
是一种更简短、可读性更强的编写条件的方法。@MarceloAgimóvel其突出的laravel结构。Blade是laravel Blade提供的简单但功能强大的模板引擎。它是一种模板语言。我更喜欢在类、中间件或类似可重用的东西中存储我的应用程序检查和逻辑;而不是在视图中。来自应该在哪里导入
文件
?您可以只导入\File,因为它是
照明\Support\Facades\File
的一个facade
$file = ($exists) ? Storage::disk('s3')->get('file.jpg') : 
         Storage::disk('s3')->get('default.jpg');
@if(file_exists('uploads/users-pic/'.auth()->user()->code_melli.'.jpg'))

    <img src="{{'/uploads/users-pic/'.auth()->user()->code_melli.'.jpg'}}"

class="img-circle" alt="{{auth()->user()->name}}" width="60" height="60">

@else
    <img src="/assets/images/user-4.png" width="60" height="60" class="img-circle img-corona" alt="user-pic" />
@endif
 @if(file_exists('uploads/users-pic/'.auth()->user()->code_melli.'.jpg'))
if( !(Storage::exists('order/'.$details['photo'])) )
{
   Storage::copy($details['photo'], 'order/'.$details['photo']);
}
use Storage;