2015-12-01 3 views
3

Цель: Если файл существует, загрузите файл, а затем загрузите default.png.Определение наличия файла в Laravel 5


Я попытался

@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 это существует.

Как правильно проверить, существует ли этот файл?

+0

Вы эхо результат 'public_path() '/ изображения/фотографии/аккаунт/{{Auth :: пользователя() -> account_id} } .png'' и проверьте, действительно ли это путь. Если да, тогда вы идете и смотрите, действительно ли он существует. Вы уже знаете, что это не так, компьютеры не лгут. –

+0

@ RyanVincent: return 'false'. – ihue

+0

Вы уверены, что получили это? Вы не можете это получить. –

ответ

4

Решение

 @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 
+0

Почему «@» перед командами? –

16

Везде, где вы можете, попытаться уменьшить количество 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=""> 

Делает ваш шаблон чистым и использует меньше кода. Вы также можете написать модульный тест на этом методе, чтобы проверить ваше заявление, а :-)

0

Сохранить файл в database.If путь изображения существует

<?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 
6

Проверьте, если файл существует в действии с "File ::" и передать resut к представлению

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

в Laravel 5.5, вы можете использовать метод exists на фасаде хранения:

https://laravel.com/docs/5.5/filesystem

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

Вы можете использовать трехкомпонентную выражение:.

$file = ($exists) ? Storage::disk('s3')->get('file.jpg') : 
     Storage::disk('s3')->get('default.jpg'); 
Смежные вопросы