Цель : если файл существует, загрузите файл, иначе загрузите 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');