Salvare immagine da stringa BASE64 in PHP e Laravel
Sostanzialmente mi arriva una stringa in BASE64 che rappresenta una firma elettronica.
Devo salvare questa immagine sul server usando PHP e Laravel.
Cominciamo dal controller:
namespace App\Http\Controllers;
class PrivacyController extends Controller {
public function salvaFirma(Request $req) {
$data = $req->json()->all();
$image = $data['image'];
try {
$image = str_replace('data:image/png;base64,', '', $image);
$image = str_replace(' ', '+', $image);
$imageName = "immagine.png";
\File::put(storage_path() . '/' . $imageName, base64_decode($image));
return response()->json(array(
"res" => "ok",
"message" => "Firma salvata correttamente!"
));
} catch (RuntimeException $e) {
return response()->json([
'res' => 'ko',
'message' => 'Errore: ' . $e->getMessage()
]);
}
}
}
I dati li invieremo tramite post, quindi nel nostro file delle routes (api.php):
Route::group(["prefix" => "privacy"], function () {
Route::post('/salva', [PrivacyController::class, 'salvaFirma']);
});
A questo punto potete inviare i dati in JSON:
{
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAAEsCAYAAAA_ECCETERA_ECCETERA="
}
Non ho messo tutta la stringa per comodità.
Enjoy!
php laravel json base64
Commentami!