Salvare immagine da stringa BASE64 in PHP e Laravel

Mattepuffo's logo
Salvare immagine da stringa BASE64 in PHP e Laravel

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!


Condividi

Commentami!