Halo semuanya, kembali lagi di sahretech. Baiklah pada kesempatan yang berbahagia kali ini saya akan berbagi tutoral pemrograman yang tidak kalah seru. Yaitu, cara membuat fitur upload file ke database di laravel. Penasaran?, ayo ikuti selengkapnya berikut ini.
Sebenarnya membuat upload file di laravel dan native kurang lebih sama. Asal kalian sudah tahu logikanya, maka semua akan terasa mudah. Dan disarankan juga kalian sudah mengerti dasar-dasar laravel, dan paling tidak sudah pernah membuat project CRUD menggunakan laravel. Berikut ini tutorialnya untuk kalian:
Baca Artikel Lain ✨ |
📰 1. Cara Membuat Multiple User di Laravel dengan Middleware read more |
📰 2. Cara Menggunakan Library Datatable Serverside di Laravel read more |
📰 3. Cara Menampilkan Data di Laravel dengan Join Table, dengan Menggunakan Query Builder read more |
Cara Membaut Upload File Dengan Laravel
1. Install Laravel
2. Membuat Database
3. Membuat Model, Migration dan Melakukan Migrate
Schema::create('uploads', function (Blueprint $table) {
$table->increments('id');
$table->string('file');
$table->string('keterangan');
$table->timestamps();
});
4. Membuat UploadController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Upload;
class UploadController extends Controller
{
public function index(){
//ambil data dari database
$data = Upload::all();
//passing data ke view
return view('view_upload')->with('data', $data);
}
public function store(Request $request){
//membuat validasi, jika tidak diisi maka akan menampilkan pesan error
$this->validate($request, [
'file' => 'required',
'keterangan' => 'required'
]);
//mengambil data file yang diupload
$file = $request->file('file');
//mengambil nama file
$nama_file = $file->getClientOriginalName();
//memindahkan file ke folder tujuan
$file->move('file_upload',$file->getClientOriginalName());
$upload = new Upload;
$upload->file = $nama_file;
$upload->keterangan = $request->input('keterangan');
//menyimpan data ke database
$upload->save();
//kembali ke halaman sebelumnya
return back();
}
}
5. Membuat View File Upload dan Tampil Data.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
</head>
<body>
<br>
<div class="container">
<h2 class="alert alert-success text-center">
Cara Input dan Tampil Data Tanpa Reload dengan Ajax Jquery
</h2>
<div class="row">
<div class="col-5">
<div class="card">
<div class="card-body">
{{-- jika mengirim file wajib menggunakan enctype="multipart/form-data" --}}
<form action="{{url('upload/proses')}}" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="exampleInputEmail1">Input File</label>
<input type="file" class="form-control" id="nama" name="file">
</div>
{{-- pesan error --}}
@error('file')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
<div class="form-group">
<label for="exampleInputPassword1">Keterangan</label>
<textarea name="keterangan" cols="30" rows="5" class="form-control"></textarea>
</div>
{{-- pesan error --}}
@error('keterangan')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
<button type="submit" id="tombol-simpan" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
<div class="col-7">
<table class="table table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">File</th>
<th scope="col">Keterangan</th>
</tr>
</thead>
<tbody>
{{-- menampilkan data --}}
@foreach ($data as $key=>$item)
<tr>
<td>{{$key+1}}</td>
<td>
{{-- jika ekstensi file adalah png, jpg atau jpeg maka tampilkan gambar --}}
@if( in_array(pathinfo($item->file, PATHINFO_EXTENSION), ['png', 'jpg', 'JPEG']))
<img src="{{asset('file_upload')}}/{{$item->file}}" style="height: 10%">
@else
<img src="https://www.freeiconspng.com/uploads/file-txt-icon--icon-search-engine--iconfinder-14.png"
style="height: 10%">
@endif
</td>
<td>{{$item->keterangan}}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
6. Membuat Routing
Langkah terakhir, silahkan buka routes/web.php lalu tambahkan script di bawah ini
Route::get('/upload', 'UploadController@index');
Route::post('/upload/proses', 'UploadController@store');
Saatnya testing!, jalankan perintah php artisan serve lalu buka browser dan ketik url berikut ini http://127.0.0.1:8000/upload. Jika berhasil maka tampilannya akan tampak seperti gambar gif di bawah ini
Hasil akhir input file di laravel |
Sekian tutorial cara membuat upload file ke database dengan laravel. Semoga tulisan singkat ini dapat membantu, dan jika ada kendala silahkan tanyakan lewat kolom komentar di bawah ini dan mari kita diskusikan bersama. Sampai jumpa di tutorial pemrograman lainnya.
$data= Barang::create($request->all());
ReplyDeleteif($request->hasFile('foto')){
$request->file('foto')->move('images/',$request->file('foto')->getClientOriginalname());
$data->foto= $request->file('foto')->getClientOriginalname();
$data->save();
}
return redirect('/barang');
}