Метод store
Метод store класса WithFileUploads сохраняет загруженный
файл в выбранную директорию на локальном диске или облачном хранилище.
В метод передаётся путь относительно корня диска, по которому будет
сохранён файл. Вторым параметром можно указать имя диска.
По умолчанию используется диск public.
Метод возвращает строку с относительным путём к сохранённому файлу, который можно сохранить в базе данных или использовать для генерации ссылки на файл.
Синтаксис
$path = $this->file->store($path, $disk);
Пример
Давайте создадим компонент для загрузки аватара пользователя
и сохраним файл в директорию avatars на диске public:
<?php
namespace AppLivewire;
use LivewireComponent;
use LivewireWithFileUploads;
class Profile extends Component
{
use WithFileUploads;
public $avatar;
public $avatarPath;
public function save()
{
$this->validate([
'avatar' => 'image|max:1024',
]);
$this->avatarPath = $this->avatar->store('avatars', 'public');
}
public function render()
{
return view('livewire.profile');
}
}
?>
<form wire:submit.prevent="save">
<input type="file" wire:model="avatar">
@error('avatar')
<span>{{ $message }}</span>
@enderror
<button type="submit">Save</button>
@if ($avatarPath)
<p>File saved: {{ $avatarPath }}</p>
@endif
</form>
Результат выполнения кода:
"avatars/abc123def456.jpg"
Пример
Давайте сохраним файл на пользовательском диске, например
s3 для Amazon S3:
<?php
namespace AppLivewire;
use LivewireComponent;
use LivewireWithFileUploads;
class FileUpload extends Component
{
use WithFileUploads;
public $document;
public $documentPath;
public function upload()
{
$this->validate([
'document' => 'file|mimes:pdf,docx|max:2048',
]);
$this->documentPath = $this->document->store('documents', 's3');
}
public function render()
{
return view('livewire.file-upload');
}
}
?>
<div>
<input type="file" wire:model="document">
@error('document')
<div>{{ $message }}</div>
@enderror
<button wire:click="upload">Upload</button>
@if ($documentPath)
<div>File uploaded to: {{ $documentPath }}</div>
@endif
</div>
Результат выполнения кода:
"documents/xyz789abc.pdf"
Смотрите также
-
трейт
WithFileUploads,
который добавляет функциональность загрузки файлов -
метод
storeAs,
который сохраняет файл с пользовательским именем -
метод
storePublicly,
который сохраняет файл с публичным доступом -
правило валидации
file,
которое проверяет что загруженный файл является валидным