Определение наличия файла в 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
существует.
Как правильно проверить, существует ли этот файл?
Ответы
Ответ 1
Решение
@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
Ответ 2
Везде, где вы можете, постарайтесь сократить количество операторов 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="">
Делает ваш шаблон чище и использует меньше кода. Вы также можете написать unit тест для этого метода, чтобы проверить ваше утверждение :-)
Ответ 3
Проверьте, существует ли файл в действии с "Файл::" и передайте результат в представление
$result = File::exists($myfile);
Ответ 4
В 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');
Ответ 5
@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'))
Ответ 6
Сохраните файл в базе данных. Если путь изображения существует
<?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