mseyfarth
Elite Observer

Über Uploadhook eine Funktion auf den FS Server antriggern (Linux)

Jump to solution

Hallo zusammen,

ich habe eine etwas kompliziertere Frage.

Bzgl. Webp-Themas welches immer mehr die Runde macht, habe ich einen Uploadhook geschrieben, der mir ein Bild in ein webp-Bild umwandeln und in eine dafür vorgesehene Resolution speichert.

Als Convertierungstool verwende ich dafür keine jar wie Java Image I/O sondern den eigenständigen Dienst ImageMagick (https://imagemagick.org/).

Um hier angenehm mit Objekten arbeiten zu können verwende ich zusätzlich das Java Interface Im4Java (im4java) welches von ImageMagick vorgeschlagen wird.

(Developer's Guide)

Damit die Entwicklung lokal funktionierte habe ich mir Lokal ebenfalls Imagemagick eingerichtet.

Nun zu meinem Problem.

Lokal an meinem Arbeitsplatz funktioniert der ganze Spaß einwandfrei.

Für alle anderen jedoch nicht.

Das Problem liegt daran, wenn ich ein Bild über den Site Architekt hochlade (Unser Dev Projekt, wobei der Server auf einem entfernten Linux liegt) dann wird zum generieren die ImageMagick Instanz von meinem lokalen Rechner verwendet und nicht die vom Linux Server wo FS drauf läuft.

Können Module (und im speziellen Uploadhooks)  nur mit bereitgestellten Jars arbeiten oder kann ich auch irgendwie einen Service auf dem eigentlichen Server antriggern??

Vielen Dank und Gruß

Matthias

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Matthias,

der UploadHook läuft ja “im Client“ also quasi lokal. Darum ruft er auch „lokale“ externe Programme auf.

Du könntest hier über einen ServerService gehen, der vom UploadHook aufgerufen wird. Den ServerService würde ich aber „low level“ machen. Damit meine ich, dass der ServerService wirklich nur die reine Datenumwandlung macht, also eine Methode wie

byte[] convertToWebp(byte[] input)

bereitstellt. Dadurch müsstest du keine eigenen Klassen im Service bzw. seinen Parametern nutzen (hat Vorteile bzgl ressourcen scopes).

Das Speichern der Daten im Medium kann dann wieder der UploadHook machen.

Viele Grüße

Michael

View solution in original post

0 Kudos
3 Replies
mbergmann
Crownpeak employee

Hallo Matthias,

der UploadHook läuft ja “im Client“ also quasi lokal. Darum ruft er auch „lokale“ externe Programme auf.

Du könntest hier über einen ServerService gehen, der vom UploadHook aufgerufen wird. Den ServerService würde ich aber „low level“ machen. Damit meine ich, dass der ServerService wirklich nur die reine Datenumwandlung macht, also eine Methode wie

byte[] convertToWebp(byte[] input)

bereitstellt. Dadurch müsstest du keine eigenen Klassen im Service bzw. seinen Parametern nutzen (hat Vorteile bzgl ressourcen scopes).

Das Speichern der Daten im Medium kann dann wieder der UploadHook machen.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

vielen Dank für Deinen Input.

Ich werde mal versuchen einen Server Service zu bauen und diesen entsprechend aufzurufen.

Ich weiß zwar noch nicht wie das funktioniert, aber probieren geht ja über studieren Smiley Wink

Danke und Gruß

Matthias

0 Kudos

Hallo mbergmann​,

nach reichlich probieren und langer Umsetzungspause konnte ich diesen Ansatz erfolgreich umsetzen.

Schwierigkeit hierbei war zunächst, dass man einen zentralen Service benötigt, der im FS Server lauft und der Uploadhook entsprechend darauf zugreift.

Dann gab es noch ein Problem mit externen Bibliotheken. Durch Verwendung des Isolated Mode konnte ich diese aber umgehen.

Ich bin somit nun in der Lage, basierend auf ein hochzuladendes Bild, weitere Varianten zu erzeugen und diese als Resolution on-the-fly zu speichern.

Gruß

Matthias

0 Kudos