[[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'
]);
}