Cara upload gambar guna Laravel

Terdapat pelbagai cara untuk membolehkan sesuatu aplikasi itu mempunyai fungsi upload gambar atau fail. Berikut adalah salah satu caranya.

Masukkan input element pada fail blade:

<label for="avatar">Select a file:</label><input type="file" id="avatar" name="avatar">

Masukkan code berikut pada bahagian controller

$file = request()->file('avatar');// current datetime + hashname$filename = $user->id."_".$file->hashName();// save file in year month date - easier for archive in future$directory = "avatar/{$user->created_at->format('Y/m/d')}";$dir = $file->storeAs($directory,$filename,'media');

Pastikan anda semak configure config\filesystems.php untuk memastikan dimana fail ini akan disimpan. Untuk memudahkan urusan, anda hanya biarkan nilainya secara default iaitu fail anda akan disimpan di storage\app\public. Berdasarkan code diatas, file akan disimpan di storage/avatar/TAHUN/BULAN/TARIKH/NAMA_FAIL.jpg

Walau bagaimanapun, terdapat satu lagi command yang perlu anda jalankan untuk memastikan fail anda dapat diakses oleh public.

php artisan storage:link

Dengan command ini, laravel akan create “shortcut” untuk ke storage\app\public pada folder public supaya dapat diakses oleh public. Anda boleh rujuk dokumentasi lengkap di laman rasmi Laravel

Sekiranya anda ingin memaparkan gambar atau fail yang telah diupload pada fail blade, anda boleh menggunakan code seperti berikut:

{{ asset('storage/'.$dir) }}

Custom Filesystem Disks

Jika anda ingin menggunakan Custom Filesystem Disks, anda boleh ke config\filesystems.php dan tambah disks media seperti berikut

'disks' => [ 'media' => [   driver' => 'local',   root' => public_path('media'),   url' => env('APP_URL').'/media',   visibility' => 'public',   throw' => false,  ],   ...];

Jika anda ingin menggunakan disks media ini, anda hanya perlu tukar pada code seperti berikut:

$file->storeAs($directory,$filename,'media');

Dengan cara ini, fail anda akan disimpan pada folder public dan cara untuk akses pada fail blade adalah seperti berikut

{{ asset('media/'.$dir) }}

Jika anda mempunyai tips yang menarik, jangan lupa komen dibawah

Post a Comment

Previous Post Next Post