РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
203 of 274 menu

Класс WithFileUploads

Класс WithFileUploads является трейтом Livewire, который подключается к компоненту для работы с загрузкой файлов. Он предоставляет необходимые методы для обработки файлов, загружаемых через форму. Трейт добавляет свойство $photos для хранения экземпляров TemporaryUploadedFile, а также методы для валидации, временного хранения и сохранения файлов.

Подключение трейта

Для начала работы с загрузкой файлов необходимо подключить трейт WithFileUploads в классе компонента:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithFileUploads; class UploadForm extends Component { use WithFileUploads; public $photo; public function render() { return view('livewire.upload-form'); } } ?>

Синтаксис

Для загрузки файлов используется HTML-элемент input type="file" с директивой wire:model. Livewire автоматически обрабатывает загрузку и сохраняет файл во временное хранилище. Свойство компонента становится экземпляром TemporaryUploadedFile.

<form wire:submit.prevent="save"> <input type="file" wire:model="photo"> <button type="submit">Upload</button> </form>

Пример сохранения файла

Давайте реализуем загрузку файла и его сохранение в директорию storage/app/public/photos:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithFileUploads; class UploadForm extends Component { use WithFileUploads; public $photo; public function save() { $path = $this->photo->store('photos', 'public'); session()->flash('message', 'File uploaded: ' . $path); } public function render() { return view('livewire.upload-form'); } } ?>
<form wire:submit.prevent="save"> <input type="file" wire:model="photo"> @error('photo') <span>{{ $message }}</span> @enderror <button type="submit">Upload</button> @if (session()->has('message')) <p>{{ session('message') }}</p> @endif </form>

Результат выполнения кода:

"File uploaded: photos/y4C8Qw2rKXlKmQzGJtVqUeK4FhZ9.jpg"

Пример с валидацией

Давайте добавим валидацию для загружаемого файла:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithFileUploads; class UploadForm extends Component { use WithFileUploads; public $photo; public function save() { $this->validate([ 'photo' => 'required|image|max:1024', ]); $path = $this->photo->store('photos', 'public'); session()->flash('message', 'Image uploaded: ' . $path); } public function render() { return view('livewire.upload-form'); } } ?>
<form wire:submit.prevent="save"> <input type="file" wire:model="photo"> @error('photo') <span>{{ $message }}</span> @enderror <button type="submit">Upload</button> @if (session()->has('message')) <p>{{ session('message') }}</p> @endif </form>

Результат выполнения кода при успешной загрузке:

"Image uploaded: photos/qW3rT5yU7iE8oP9aD2fG4hJ6kL1.jpg"

Смотрите также

  • класс WithFileUploads,
    который предоставляет функциональность для загрузки файлов
  • метод store,
    который сохраняет загруженный файл в указанную директорию
  • метод storeAs,
    который сохраняет файл с заданным именем
  • метод storePublicly,
    который сохраняет файл в публичную директорию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить