GX-Bug #70995
geschlossenREST API Zuordnung von Artikelbildern mit Pfad ist nicht möglich | REST API assignment of product images with path is not possible
0%
Via API können Produkten jetzt auch Bilder zugewiesen werden, die in Unterordnern liegen
Beschreibung
Die Zuordnung von Artikelbilder bei Produkterstellung oder Produktupdate per Rest-API ist nicht möglich, wenn man Unterordner mit dem Dateinamen angibt.
Kann wie folgt reproduziert werden:
- Shop installieren
- Ein beliebiges Produkt öffnen, dort über eines der Bilder den ResponsiveFileManager öffnen
- Im Hauptverzeichnis einen neuen Ordner anlegen, z. B. "testdir"
- In das neue Verzeichnis wechseln und dort ein Bild hochladen, das hochgeladene Bild auswählen
- Den Pfad des angepassten Bildes kopieren ("testdir/")
- Artikel nun entweder speichern oder die Änderungen verwerfen
- Über API v2 ein neues Produkt erstellen oder ein existierendes aktualisieren, als "filename" bei einem der Bilder den Pfad aus Schritt 5 eintragen
Erwartetes Verhalten:
Es sollte beim Update und Insert von Artikeldaten mit Bildern auch Unterordner möglich sein, wie es auch im Gambio Admin derzeit schon möglich ist
Tatsächliches Verhalten:
Es ist nicht möglich Aritkelbilder per REST API mit Unterordner, hochzuladen, da dies immer mit einer Fehlermeldung verhindert wird.
Der Anfang der Fehlermeldung ist folgende:
{
"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:
/**
* @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.
The assignment of article images during product creation or product update via Rest API is not possible if you specify subfolders with the file name.
Can be reproduced as follows:
- Install shop
- Open any product and open the ResponsiveFileManager with one of the images
- Create a new directory in the root directory, for example "testdir"
- Switch to the newly created directory and upload an image. Select the image afterwards
- Copy the path of the changed image ("testdir/")
- Save the product or discard the changes
- Via API v2 create a new product or update an existing one using the path from step 5 as the "filename" of one of the images
Expected behavior:
When updating and inserting article data with images, subfolders should also be possible, as is currently already possible in the Gambio Admin
Actual behavior:
It is not possible to upload article images via REST API with subfolders, as this is always prevented with an error message.
The beginning of the error message is as follows:
{
"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": [
"Fahrzeuginrichtungen/Mercedes_Benz/Vito/2121511LS1733-001/Fahrzeugeinrichtung_Mercedes_Benz_Vito_Kompakt_L1_Linke_Seite_B1.jpg"
]
}
The following function is called in the file and generates the error message:
/**
* @param string $filename
*/
protected function validateFilenameIsNotAPath(string $filename): void
{
if ($filename !== basename($filename)) {
throw new InvalidArgumentException('Filename "' . $filename . '" is not valid');
}
}
}
Because I always specify a path with the transfer (path1/path2/image.jpg), this string ($filename=path1/path2/image.jpg) is compared with "basename(path1/path2/image.jpg)", i.e. only "image.jpg".
Von Rico Schreiber vor 2 Monaten aktualisiert
- Status wurde von Gemeldet zu Anerkannt geändert
Von Rico Schreiber vor 2 Monaten aktualisiert
- Tags wurde auf 5.0.1.0 gesetzt
- Status wurde von Anerkannt zu In Bearbeitung geändert
- Zugewiesen an wurde auf Rico Schreiber gesetzt
- Zielversion wurde auf 5.0.1.0 gesetzt
- Release Notes Langtext aktualisiert (Vergleich)
Von Rico Schreiber vor 2 Monaten aktualisiert
- Thema wurde von REST API Zuordnung von Artikelbildern mit Pfad ist nicht möglich zu REST API Zuordnung von Artikelbildern mit Pfad ist nicht möglich | REST API assignment of product images with path is not possible geändert
Von Rico Schreiber vor 2 Monaten aktualisiert
- Status wurde von In Bearbeitung zu Testing geändert
- Zugewiesen an
Rico Schreiberwurde gelöscht
Von Krystian Czerwinski vor 2 Monaten aktualisiert
- Zugewiesen an wurde auf Krystian Czerwinski gesetzt
Von Krystian Czerwinski vor 2 Monaten aktualisiert
- Zugewiesen an
Krystian Czerwinskiwurde gelöscht
Von Rico Schreiber vor 4 Tagen aktualisiert
- Status wurde von Testing zu Erledigt geändert