oktatas:web:back-end_framework:laravel:laravel_rest_api:kepek_adatbazisban
Tartalomjegyzék
Laravel REST API - Képek adatbázisban
- Szerző: Sallai András
- Copyright © Sallai András, 2023
- 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:
<img src="data:image/png;base64,iVBORw0KG... (a további képadataik)">
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' ]); }
oktatas/web/back-end_framework/laravel/laravel_rest_api/kepek_adatbazisban.txt · Utolsó módosítás: 2023/05/17 23:53 szerkesztette: admin