[[oktatas:web:back-end_framework:laravel:laravel_rest_api|< Laravel API]] ====== Laravel REST API - Képek adatbázisban ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Bevezetés ===== Adatbázisban tárolhatjuk a képek útvonalát és a magukat a képeket is. Ebben a leírásban a képeket fogjuk adatbázisban tárolni és nem azok útvonalát. A képek tárolása adatbázisban nagyon gyorsan fogyasztja az adatbázis tárhelyet. Ezért a használata nem ajánlott. ===== Adatbázis tábla ===== A migrációs fájlban az up() metódus tartalma: public function up(): void { Schema::create('employees', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('city'); $table->double('salary'); $table->binary('image'); $table->timestamps(); }); } ===== Tárolás ===== public function store(Request $request) { $path = NULL; $imageData = NULL; if($request->hasFile('image')) { $path = $request->file('image'); $imageData = file_get_contents($path); $imageBase64 = base64_encode($imageData); } $employee = new Employee; $employee->name = $request->name; $employee->city = $request->city; $employee->salary = $request->salary; $employee->image = $imageBase64; $employee->save(); return response()->json([ 'name' => $employee->name, 'success' => 'ok' ]); } ===== Validálás ===== Példa: $request->validate([ 'name' => 'required|string|max:255', 'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', ]); ===== Képekről MIME adatok tárolása ===== Ha képekről MIME adatokat is tárolunk, akkor semmit nem kell konvertálni kliens oldalon. $employee = new Employee; $employee->name = $request->name; $employee->city = $request->city; $employee->salary = $request->salary; $employee->image = 'data:image/png;base64,' . $imageBase64; $employee->save(); A böngészők megjelenítik az ilyen adatot: ===== Tárolás lekérdezett MIME típussal ===== public function store(Request $request) { $path = NULL; $mime = NULL; $imageData = NULL; if($request->hasFile('image')) { $path = $request->file('image'); $mime = $request->file('image')->getClientMimeType(); $imageData = file_get_contents($path); $imageBase64 = base64_encode($imageData); } $employee = new Employee; $employee->name = $request->name; $employee->city = $request->city; $employee->salary = $request->salary; $employee->image = 'data:'. $mime .';base64,' . $imageBase64; $employee->save(); return response()->json([ 'name' => $employee->name, 'success' => 'ok' ]); }