Определение наличия файла в 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 .

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

Где бы вы ни находились, попытайтесь уменьшить количество операторов 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=""> 

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

Проверьте, существует ли файл в действии с «Файл ::» и передайте его в представление

 $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 

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

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

В 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');