Upload Avatar & Konfigurasi Storage Disk
Filament Starter Kit sudah menyediakan fitur upload avatar secara default di halaman Edit Profile. Pengaturan file upload (seperti Avatar) sangat bergantung pada konfigurasi sistem penyimpanan (filesystem) di Laravel.
Secara default, Laravel dan Filament akan menyimpan file ke direktori lokal (disk public), namun untuk penggunaan skala produksi (production) sangat disarankan untuk menggunakan Object Storage seperti Amazon S3, DigitalOcean Spaces, MinIO, atau Cloudflare Spaces.
Berikut adalah panduan lengkap cara mengonfigurasi penyimpanan Avatar, baik menggunakan Local Storage maupun S3.
1. Menggunakan Local Storage (Default)
Secara default, Filament menggunakan disk public untuk mengelola file upload (sesuai dengan konfigurasi default_filesystem_disk pada file config/filament.php atau env FILAMENT_FILESYSTEM_DISK).
Langkah-langkah:
- Pastikan Anda telah menjalankan perintah symbolic link agar file di
storage/app/publicdapat diakses dari browser:php artisan storage:link - Pastikan file
.envAnda mengatur koneksi aplikasi dan disk:(Catatan: SesuaikanAPP_URL=http://localhost:8000
FILESYSTEM_DISK=public
FILAMENT_FILESYSTEM_DISK=publicAPP_URLdengan URL project Anda, misalnya menggunakan Laravel Herdhttp://filament-starter-kit.test) - Sekarang setiap kali User mengunggah avatar, file tersebut akan tersimpan di dalam folder
storage/app/public/avatars.
2. Menggunakan S3 Compatible Storage (Direkomendasikan untuk Production)
Jika aplikasi Anda ditujukan untuk environment profesional dan Anda ingin menyimpan file di S3 atau layanan yang kompatibel dengan S3 (misal: MinIO, R2, DO Spaces), Anda perlu menginstal package tambahan dan mengatur konfigurasi .env.
Langkah-langkah:
- Instal package resmi Laravel untuk AWS S3:
composer require league/flysystem-aws-s3-v3 "^3.0" - Tambahkan atau perbarui konfigurasi disk di file
.envAnda dengan detail koneksi S3:FILESYSTEM_DISK=s3
FILAMENT_FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your_bucket_name
AWS_USE_PATH_STYLE_ENDPOINT=false
# AWS_ENDPOINT=https://sgp1.digitaloceanspaces.com # Jika menggunakan DigitalOcean / MinIO dll. - Filament akan secara otomatis membaca pengaturan
FILAMENT_FILESYSTEM_DISK. KomponenFileUploaddan avatar rendering (melalui antarmukaHasAvatardi ModelUser) otomatis menyesuaikan dan mengambil URL dari S3.
(Anda bisa melihat implementasinya di app/Models/User.php pada method getFilamentAvatarUrl() di mana Starter Kit sudah menangani disk dinamis tersebut).
Ringkasan
- Starter Kit ini sangat fleksibel dan dapat digunakan oleh Pemula dengan langsung menjalankan
php artisan storage:link(Local Public Disk). - Untuk Profesional, cukup install package
league/flysystem-aws-s3-v3, masukkan credentials di.env, lalu gantiFILESYSTEM_DISKkes3tanpa perlu memodifikasi kode apapun.