Правило mimes
Правило mimes используется для валидации MIME-типа загружаемого файла
в компонентах Livewire. Оно применяется в методе rules компонента
и проверяет, что загруженный файл имеет один из допустимых MIME-типов.
В значении правила перечисляются разрешённые MIME-типы через запятую.
Синтаксис
<?php
use Livewire\WithFileUploads;
public function rules()
{
return [
'file' => 'mimes:image/jpeg,image/png,application/pdf',
];
}
?>
Пример
Давайте создадим компонент для загрузки аватара с проверкой MIME-типа:
<?php
namespace App\Livewire;
use Livewire\Component;
use Livewire\WithFileUploads;
class AvatarUpload extends Component
{
use WithFileUploads;
public $avatar;
public $message = '';
public function rules()
{
return [
'avatar' => 'mimes:image/jpeg,image/png,image/gif',
];
}
public function upload()
{
$this->validate();
$path = $this->avatar->store('avatars', 'public');
$this->message = 'File uploaded successfully!';
}
public function render()
{
return view('livewire.avatar-upload');
}
}
?>
<div>
<form wire:submit.prevent="upload">
<input type="file" wire:model="avatar">
@error('avatar')
<span style="color: red;">{{ $message }}</span>
@enderror
<button type="submit">Upload</button>
</form>
@if($message)
<p>{{ $message }}</p>
@endif
</div>
Результат выполнения кода при загрузке PNG-файла:
<div>
<form>
<input type="file">
<button type="submit">Upload</button>
</form>
<p>File uploaded successfully!</p>
</div>
Пример
Валидация нескольких MIME-типов с сообщением об ошибке:
<?php
namespace App\Livewire;
use Livewire\Component;
use Livewire\WithFileUploads;
class DocumentUpload extends Component
{
use WithFileUploads;
public $document;
public $message = '';
public function rules()
{
return [
'document' => 'mimes:application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document',
];
}
public function upload()
{
$this->validate();
$path = $this->document->store('documents', 'public');
$this->message = 'Document uploaded successfully!';
}
public function render()
{
return view('livewire.document-upload');
}
}
?>
<div>
<form wire:submit.prevent="upload">
<input type="file" wire:model="document">
@error('document')
<span style="color: red;">{{ $message }}</span>
@enderror
<button type="submit">Upload Document</button>
</form>
@if($message)
<p>{{ $message }}</p>
@endif
</div>
Результат выполнения кода при загрузке PDF-файла:
<div>
<form>
<input type="file">
<button type="submit">Upload Document</button>
</form>
<p>Document uploaded successfully!</p>
</div>
Смотрите также
-
трейт
WithFileUploads,
который добавляет функциональность загрузки файлов -
правило
file,
которое проверяет, что поле является файлом -
правило
image,
которое проверяет, что файл является изображением -
правило
max,
которое ограничивает максимальный размер файла