Rest API Produktaktualisierung (Artikelbilder)

Thema wurde von Anonymous, 23. Juni 2024 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    22. Juli 2021
    Beiträge:
    98
    Danke erhalten:
    5
    Danke vergeben:
    31
    Wir benutzen die Rest API v2 um Produkte in den Gambio-Shop hochzuladen.
    Bei der Verwendung von Artikelbildern stoßen wir auf Probs.

    Die Artikelbilder werden vor der Produktaktualisierung über die Image-List Rest-API v3 hoch geladen. Das funktioniert auch. Die Bilder sind in den entsprechenden Ordner angelegt. Mit Ordner meine ich, dass wir die Bilder in Unterverzeichnissen verwalten. Beispiel: original_images/Produktcategorie 1/ Subcategorie1/subcategorie2/usw./bild.jpg

    Laut Beschreibung der Rest-API v2 für Produkt-Bilder gibt es keine Path-Angabe.
    Ich muss aber eine Path-Angabe machen, damit das richtige Bild genommen wird.
    Bei der Verwendung von Pathen mit Backslash funktioniert die Rest-API zwar, aber es folgen undefinierte Probs im Nachgang.
    Bei der Verwendung von Slash als Path-Angabe bekomme ich folgende Fehlermeldung:

    Kann mir hier jemand mit einer Lösung weiterhelfen?
     

    Anhänge:

  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    22. Juli 2021
    Beiträge:
    98
    Danke erhalten:
    5
    Danke vergeben:
    31
    Folgendes konnten wir bisher rausfinden.

    Die Zuordnung von Artikelbilder bei Produkterstellung oder Produktupdate per Rest-API bekommen wir nur dann eine Fehlermeldung, wenn die Artikelbilder in einem Unterpfad liegen.

    Der Anfang der Fehlermeldung ist folgende:
    Code:
    {
        "affected": [],
        "errors": [
            {
                "errorMessage": "Filename \"Fahrzeugeinrichtungen/Mercedes_Benz/Vito/2121511LS1733-001/Fahrzeugeinrichtung_Mercedes_Benz_Vito_Kompakt_L1_Linke_Seite_B1.jpg\" is not valid",
                "stacktrace": [
                    {
                        "file": "/www/htdocs/xxxxxx/testshop.mein-shop.de/GXEngine/Shared/FileSystem/FilenameStringType.php",
                        "line": 53,
                        "function": "validateFilenameIsNotAPath",
                        "class": "FilenameStringType",
                        "type": "->",
                        "args": [
                            "Fahrzeugeinrichtungen/Mercedes_Benz/Vito/2121511LS1733-001/Fahrzeugeinrichtung_Mercedes_Benz_Vito_Kompakt_L1_Linke_Seite_B1.jpg"
                        ]
                    },
    
    Folgende Funktion wird in der Datei aufgerufen und erzeugt die Fehlermeldung:
    Code:
       
        /**
         * @param string $filename
         */
        protected function validateFilenameIsNotAPath(string $filename): void
        {
            if ($filename !== basename($filename)) {
               
                throw new InvalidArgumentException('Filename "' . $filename . '" is not valid');
            }
        }
    }
    Dadurch, dass ich immer eine Pfad mit bei der Übergabe angebe (Pfad1/Pfad2/Bild.jpg) wird dieser String ($filename=Pfad1/Pfad2/Bild.jpg) mit "basename(Pfad1/Pfad2/Bild.jpg)" also nur "Bild.jpg" verglichen.

    Ist das ein Bug von Seiten Gambio oder machen wir bei der Übergabe etwas falsch?
    Hat jemand eine Lösung für uns?
     
  3. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    975
    Danke erhalten:
    217
    Danke vergeben:
    153
    Ich kann es auch nicht genau sagen, aber mein letzter Kenntnisstand war, dass keine Unterordner im den Images-Bereichen unterstützt werden. ALLE Bilder müssen einfach direkt in das original_images Verzeichnis geladen werden, damit der Rest (image-Processing etc.) funktioniert.
     
  4. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    22. Juli 2021
    Beiträge:
    98
    Danke erhalten:
    5
    Danke vergeben:
    31
    #4 Anonymous, 28. Juni 2024
    Zuletzt bearbeitet: 28. Juni 2024
    Wenn wir keine Unterordner angeben dann funktioniert es, das stimmt. Aber bei tausenden von Artikeln wäre das ja ein riesen Chaos...
    Und wenn man im Backend bei Gambio im Artikel direkt die Pfade zum Artikelbild angibt, dann funzt es ja auch.
    Auch, dass ich über die REST-API unterpfade anlegen kann und Bilder speichern kann funzt.