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

Метод storeAs

Метод storeAs класса WithFileUploads предназначен для сохранения загруженного через Livewire файла в файловую систему Laravel с указанием конкретного имени. В отличие от метода store, который генерирует уникальное имя автоматически, storeAs позволяет задать нужное имя файла. Метод принимает три параметра: путь для сохранения, имя файла и необязательный параметр диска (по умолчанию используется диск 'public'). Возвращает экземпляр класса IlluminateHttpUploadedFile или путь к сохранённому файлу.

Синтаксис

$file->storeAs($path, $name, $disk);

Пример

Давайте создадим компонент для загрузки аватара и сохраним его с именем 'avatar.jpg':

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithFileUploads; class UploadAvatar extends Component { use WithFileUploads; public $avatar; public $path; public function save() { if ($this->avatar) { $this->path = $this->avatar ->storeAs('avatars', 'avatar.jpg', 'public'); } } public function render() { return view('livewire.upload-avatar'); } } ?>
<form wire:submit.prevent="save"> <input type="file" wire:model="avatar"> <button type="submit">Upload</button> </form> @if ($path) <p>File saved: {{ $path }}</p> @endif

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

"avatars/avatar.jpg"

Файл будет сохранён в директории storage/app/public/avatars/avatar.jpg.

Пример

Давайте сохраним файл с динамическим именем, используя имя пользователя и расширение:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithFileUploads; class UploadDocument extends Component { use WithFileUploads; public $document; public $username = 'john_doe'; public $result; public function save() { if ($this->document) { $extension = $this->document ->getClientOriginalExtension(); $name = $this->username . '.' . $extension; $this->result = $this->document ->storeAs('documents', $name, 'public'); } } public function render() { return view('livewire.upload-document'); } } ?>
<form wire:submit.prevent="save"> <input type="file" wire:model="document"> <button type="submit">Upload document</button> </form> @if ($result) <p>Document: {{ $result }}</p> @endif

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

"documents/john_doe.pdf"

Пример

Давайте сохраним файл на другой диск, например на S3 (предварительно настроенный в файле config/filesystems.php):

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithFileUploads; class UploadToS3 extends Component { use WithFileUploads; public $file; public $path; public function save() { if ($this->file) { $this->path = $this->file ->storeAs('uploads', 'backup.dat', 's3'); } } public function render() { return view('livewire.upload-to-s3'); } } ?>
<form wire:submit.prevent="save"> <input type="file" wire:model="file"> <button type="submit">Upload to S3</button> </form> @if ($path) <p>Saved: {{ $path }}</p> @endif

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

"uploads/backup.dat"

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

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