Automatisches speichern der Cover-Bilder

mAirlist bietet die Möglichkeit, mit dem Parameter %ALBUMART das im Track hinterlegte Cover mit zu übermitteln.

Wichtig ist es dabei zu beachten, dass hier für das POST-Kommando multipart/form-data gewählt wird. Als Parameter wähle ich hier $cover und $mairlistid um später in der Laravel-Programmierung das Cover unter der mairlistid speichern zu können, da alle unsere Titel in der Datenbank auf dem Webserver mti der mairlistid indentifiziert werden können.

Wichtig bei Laravel ist, da es sich um ein POST-COmmand handelt muss die csfr-token-prüfung abgeschaltet werden, sonst kommt der Quatsch erst gar nicht beim Controller an. Das hat mich ein paar Stunden gekostet, bis ich das gemerkt habe, warum mein lokaler Test funktioniert, aber der externe Test nicht.

In Laravel 11.x muss das in config/app.php mit hinzugefügt werden:

   ->withMiddleware(function (Middleware $middleware) {
        $middleware->validateCsrfTokens(except: [
            'logging/*',
        ]);
    })

damit wird der Pfad logging/* exkludiert von der csfr-Token-Prüfung und die Daten kommen beim Controller dann auch an.

In meinem Controller für das Logging habe ich das dann so umgesetzt, dass mairlistid und cover entsprechdend ermittelt und gesichert werden:

public function cover(Request $request)
    {

         // Prüfe ob die variablen gewünscht und im richtigen Format sind
        $request->validate([
            'cover' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
            'mairlistid' => 'required|string',
        ]);

        // Erhalte die mairlistid aus der Anfrage
        $mairlistid = $request->input('mairlistid');

        // Erhalte das Bild aus der Anfrage
        $image = $request->file('cover');

        // Definiere den Speicherort und den Dateinamen
        $destinationPath = 'coverimages';
        $imageName = $mairlistid . '.' . $image->getClientOriginalExtension();

        // Speichere das Bild
        $image->storeAs($destinationPath, $imageName, 'public');

        // Erfolgsnachricht mit Bildname zurückgeben
        return back()->with('success', 'Image uploaded successfully')->with('image', $imageName);

}

Somit werden dann die erhaltenen cover-Images als mairlistid.ext auf dem storage in Laravel gespeichert. Tolle Wurst.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert