Lsl Error File Upload Error Storing New Asset
Laravel File Upload (Belajar Laravel #15)
Laravel File Upload merupakan salah satu bagian dari fungsi class yang dipergunakan untuk mengunggah atau mengupload file pada server. Penggunaan fitur ini misalnya pada halaman profil, maka pengguna dapat mengisikan form untuk berbagai data profil termasuk mengupload foto yang akan difungsikan sebagai foto profil. Untuk keperluan Laravel File Upload ini disediakan abstraksi sistem file melalui modul PHP Flysystem yang menyediakan driver yang dapat dipergunakan untuk bekerja dengan filesystem lokal, Amazon S3, dan Rackspace Deject Storage.
Membuat Laravel File Upload
Berikut adalah beberapa hal yang perlu diperhatikan untuk mengimplementasikan Laravel File Upload, yaitu terkait dengan File Arrangement, Multipart Class Data, Symlink, dan Enctype.
File Organization
- Konfigurasi terdapat pada config/filesystems.php

Konfigurasi File Systems
- Public Deejay
- Publik Disk merupakan tempat penyimpanan yang ditujukan untuk meletakkan file yang akan dapat diakses publik.
- Secara default, disk publik adalah penyimpanan lokal pada binder storage/app/public.
- Agar binder tersebut dapat diakses dari web, maka perlu dibuat symbolic link dari public/storage ke storage/app/public.
- Dengan symbolic link kedua folder akan berisi file yang sama, namun file tidak dicopykan
- Pembuatan Symbolic Links melalui perintah Artisan:
$ php artisan storage:link

Link ke binder public

Pembuatan Symbolic Link
- Setelah symbolic link dibuat, maka file akan dapat diakses public dengan menggunakan function asset untuk menghasilkan link yang sesuai
- Berikut contoh untuk menampilkan isi file.txt yang terletak di folder public/storage
echo asset('storage/file.txt'); - The Local Driver
- Pada saat menggunakan driver lokal, semua operasi file adalah relatif terhadap folder root yang ditentukan dalam file konfigurasi, dimana defaultnya adalah: storage/app
- Berikut contoh potongan program untuk menyimpan file di storage/app/file.txt:
Storage::disk('local')->put('file.txt', 'Contents'); - Penggunaan Storage harus diawali dengan perintah:
use Illuminate\Back up\Facades\Storage;
- Mengambil atau Membaca File
- Untuk memgambil file dapat dipergunakan method get. Jangan lupa bahwa file akan diambil pada folder root storage sesuai konfigurasi
$contents = Storage::get('file.jpg'); - Untuk memastikan bahwa file yang akan diambil tersedia, dapat dipergunakan method exist
$exists = Storage::disk('local')->exists('file.jpg');
- Untuk memgambil file dapat dipergunakan method get. Jangan lupa bahwa file akan diambil pada folder root storage sesuai konfigurasi
- Mendownload File
- Method download dapat dipergunakan untuk memberikan respon untuk meminta browser mendownload sebuah file.
- File name yang terdapat di parameter kedua merupakan nama file yang akan dilihat user pada saat mendownload file.
- Parameter ketiga merupakan HTTP headers
return Storage::download('file.jpg');
return Storage::download('file.jpg', $proper noun, $headers);
- Untuk menghasilkan sebuah URL menuju file dimaksud, dapat digunakan method url pada Storage
$url = Storage::url('file.jpg'); - Berikut adalah fungsi untuk menyalin dan memindahkan sebuah file ke file lain
Storage::copy('onetime/file.jpg', 'new/file.jpg');
Storage::motility('former/file.jpg', 'new/file.jpg');
File Uploads
- Berikut adalah Langkah Pembuatan File Uploads
- Membuat symlink
- Pada controller yang memanfaatkan course Storage:
use Illuminate\Support\Facades\Storage; - Buat form dengan enctype 'multipart/form-data'
- Buat elemen course File Upload
- Validasi file
- Simpan file di server
Tutorial Laravel File Upload
Tutorial berikut adalah menambahkan file upload gambar pada blog mail.
Membuat symlink
- Buat symlink terlebih dahulu, supaya file nantinya dapat diakses public
- Semua file yang ada di storage/app/public akan dapat diakses pada public/storage

Membuat Symlinks
Menambahkan Enctype
- Silahkan menambahkan enctype di Form::open
Tambahkan Tombol File Upload
- Buka file create.blade.php
- Tambahkan perintah Grade untuk menampilkan tombol File Upload

Tombol Pemilihan File
Menambahkan Tabel untuk menyimpan nama file
- Untuk menyimpan nama file maka perlu ditambahkan sebuah field cavalcade di tabel posts, untuk itu dibuat sebuah migration

Migrations menambah field nama file pada table
- Tambahkan column foto

Migration Tabel Foto – Up

Migration Tabel Foto – Down
- Setelah menjalankan migrations bank check database via phpMyAdmin

Hasil Running Migrations
Mengubah PostsController
Ada beberapa hal yang perlu ditambahkan di Posts Controller untuk memvalidasi dan menyimpan file di dalam database maupun di local storage

Isi PostsController
Validasi Image
- Pada contoh ini file upload dipergunakan untuk menyimpan image, maka perlu dilakukan validasi untuk memastikan file yang diupload adalah image (parameter pertama)
- nullable di parameter kedua artinya opsional, boleh tidak ada
- max untuk membatasi ukuran file yang diupload (bytes)

Validasi Image
Memeriksa File Upload
Untuk memeriksa apakah user mengupload file dengan memanfaatkan course, dapat diperiksa dengan method hasfile
Nama File Unik
- Program harus memastikan bahwa nama file unik, ada kemungkinan user akan mengupload foto dengan nama yang sama, misalnya foto.jpg, ada kemungkinan akan dipergunakan berulang kali.
- Pada contoh berikut akan dilakukan pengambilan nama file tanpa extension, kemudian pengambilan extension.
- Nama file yang disimpan di database termasuk penyimpanan di local storage akan menggunakan format namaFileTanpaExt_waktuUpload.extension
- Dengan menggunakan method storeAs bisa ditetapkan lokasi penyimpanan dan juga nama file yang diinginkan

Potongan Program File Upload
- Programme sebelumnya hanya menyimpan file di server, belum termasuk penyimpanan data. Tambahkan di controller.

Nama Laravel File Upload Yang Disimpan
- Silahkan dicoba untuk menjalankan program

Tampilan Form File Upload

Berhasil Menambahkan data termasuk File Foto
Written past: SEW 20191115
Share This Story, Choose Your Platform!
One Annotate
Source: https://informatika.uc.ac.id/id/2019/11/laravel-file-upload/
[…] File Upload (#15) […]