Crafter Posted March 23, 2019 Report Share Posted March 23, 2019 Hallo zusammen, leider habe ich ein Problem beim Image upload mithilfe der API. Ich verwende die setMedia Funktion aus der Dokumentation: { "function":"setMedia", "paras":{ "user":"", "pass":"", "link_id":"", "isLinkExternal":"", "className":"", "mediaItem":{ "filename":"", "filedata":"", "mediatype":"" } }} filedata erstelle ich mithilfe der php base64_encode funktion: $image = base64_encode($imageData); Mit Daten gefüllt sieht das ganze so aus: { "function":"setMedia", "paras":{ "user":$user, "pass":$pass, "isLinkExternal": 0, "className":"attribute", "mediaItem":{ "filename":"test.jpg", "filedata": $image, "mediatype":"image" } }} Bei className bin ich mir unsicher welche Angabe die richtige ist und bei link_id ist mir nicht klar welcher Wert verlangt wird, aber es gibt keine Fehlermeldung wenn ich diese weglasse. Beim Aufruf bekomme ich folgende Antwort: array(2) { ["result"]=> bool(true) ["message"]=> string(7) "SUCCESS" } Allerdings wurde das Bild nicht hinzugefügt. Auch in der Datenbank unter xt_media ist kein neuer Eintrag. Was mache ich hier falsch? Viele Grüße Link to comment Share on other sites More sharing options...
Alex@4tfm Posted March 23, 2019 Report Share Posted March 23, 2019 Die sopa-calls sind im grunde wie die DB aufgebaut. Ich kann dir nicht im Detail erklären, was hier richtig wäre weil ich da dran eine Weile nicht mehr selbst entwickelt habe, aber wenn du ein Bild über das Shopbackend hoch lädst und dir dann die Relationen in der Datenbank anschaust, sollte alles klarer werden. Link to comment Share on other sites More sharing options...
xt:Commerce Posted March 24, 2019 Report Share Posted March 24, 2019 die linkId wird natürlich benötigt, das ist die ID des jeweiligen objekts für welches du das Bild setzen willst. bei "category" z.B. die Kategorie ID, bzw wenn isLinkExternal = true dann die external id > Bei className bin ich mir unsicher welche Angabe die richtige Welches Bild willst du setzen ? Der className unterstützt 'category', 'attribute', 'manufacturer' - Also Kateogrie, Attribute oder Herstellerbild. Link to comment Share on other sites More sharing options...
Crafter Posted March 24, 2019 Author Report Share Posted March 24, 2019 Ich möchte Bilder für Artikel setzten. Die "setArticle" Funktion hat selbst folgende Attribute welche mit Bildern in Verbindung stehen: { "function":"setArticle", "paras":{ ... "productItem":{ ... "products_image":"", "image_name":"", "image":"", "products_images":[{ "type":"", "id":"", "image_name":"", "image_data":"" } ] ... }} Wenn ich bei "products_image" den Namen eines bereits vorhandenen Bildes angebe wird dieses beim Produkt angezeigt. Deshalb wollte ich jetzt das Artikelbild mit der setMedia Funktion hochladen und dann so zuordnen. Lieber wäre es mir das Hauptbild des Produkts und die weiteren Bilder direkt mit der "setArticle" Funktion hinzuzufügen. Allerdings hatte das nicht funktioniert. Wo ist z.B. der Unterschied zwischen "products_image", "image_name", "image" und "products_images"? Nachtrag: Unabhängig davon welchen Wert ich bei setMedia für "className" angebe (möglich sind laut Doku 'category', 'attribute', 'manufacturer') in der Tabelle xt_media hat die Spalte 'class' immer den Wert category. Wenn ich bei link_id die ProduktId angebe zu welcher der Eintrag gehören soll, ist die Spalte 'id' in xt_media die link_id. Diese sollte aber automatisch gesetzt werden, da Primary key und AUTO_INCREMENT. Das Bild welches ich im korrekten base64 format (gleiches format wie das welches ich per getImage bekomme) übergebe wird außerdem nicht auf dem Server hochgeladen. Weiterhin ist mir aufgefallen das 'date_added' auf '0000-00-00 00:00:00' steht, statt des aktuellen Datums. Das gleiche in xt_products bei den über die API hinzugefügten Produkten. Link to comment Share on other sites More sharing options...
xt:Commerce Posted March 24, 2019 Report Share Posted March 24, 2019 für Artikelbilder gibt es einen eigenen Call: https://xtcommerce.atlassian.net/wiki/spaces/XT41DUE/pages/10256561/setArticleImages+JSON bzw als liste bei mehreren https://xtcommerce.atlassian.net/wiki/spaces/XT41DUE/pages/10256565/setArticleImageList+JSON der setMedia ist nicht für Artikelbilder. > Unabhängig davon welchen Wert ich bei setMedia für "className" angebe (möglich sind laut Doku 'category', 'attribute', 'manufacturer') in der Tabelle xt_media hat die Spalte 'class' immer den Wert category. Der Bildname muss jeweils anders sein. Link to comment Share on other sites More sharing options...
Crafter Posted March 26, 2019 Author Report Share Posted March 26, 2019 Das hinzufügen des Bildes mit "setArticleImages" hat nun funktioniert. Allerdings besteht noch immer das Problem das der Wert "date_added" auf "0000-00-00 00:00:00" gesetzt wird. Bei der setArticle Funktion lässt sich dieser per API setzten, bei der setArticleImages funktion wird der Parameter hingegen ignoriert. Link to comment Share on other sites More sharing options...
xt:Commerce Posted March 27, 2019 Report Share Posted March 27, 2019 ok danke für den Hinweis mit dem Datum, wir prüfen und beheben dies mit dem nächsten Patch. Link to comment Share on other sites More sharing options...
Crafter Posted March 27, 2019 Author Report Share Posted March 27, 2019 Super, ist es in der Praxis ein Problem wenn das Erstellungsdatum bis dahin auf 0000-00-00 00:00:00 gesetzt wird? Link to comment Share on other sites More sharing options...
xt:Commerce Posted March 27, 2019 Report Share Posted March 27, 2019 Nein, das führt zu keinen weitern Problemen. Link to comment Share on other sites More sharing options...
Crafter Posted April 13, 2019 Author Report Share Posted April 13, 2019 Beim hinzufügen von Bildern habe ich immernoch ein Problem. Das Hauptbild kann ich problemlos mit setArticleImages hinzufügen. Das hinzufügen von weiteren Bildern funktioniert aber garnicht: $data = array( "function" => "setArticleImages", "paras" => array( "user" => $user, "pass" => $pass, "product_model" => $productsModel, "images" => array( "products_id" => $products_id, "image_name" => $imageName, "image" => $image, "products_images" => array( "products_id" => $products_id, "image_name" => $imageName2, "image" => $image2 ), ) ) ); Führt dazu das zwar ein zweites Bild hinzugefügt wird. Dieses wird aber dann im Shop nur als "nicht vorhanden" angezeigt. Es ist anklickbar aber statt des Bildes wird nur das "kaputte" Bildzeichen angezeigt. Auch setArticleImagesList führt nicht zum erfolg: $data = array( "function" => "setArticleImagesList", "paras" => array( "user" => $user, "pass" => $pass, "images" => array( "products_id" => $products_id, "product_model" => $productsModel, "image_name" => $imageName2, "image" => $image2 ) ) ); Führt zu folgender Fehlermeldung: array(4) { [0]=> array(3) { ["products_model"]=> NULL ["result"]=> bool(false) ["message"]=> string(62) "FAIL product not exists externalID: productsModel: productsID:" } [1]=> array(3) { ["products_model"]=> string(1) "T" ["result"]=> bool(false) ["message"]=> string(64) "FAIL product not exists externalID:T productsModel:T productsID:" } [2]=> array(3) { ["products_model"]=> string(1) "1" ["result"]=> bool(false) ["message"]=> string(64) "FAIL product not exists externalID:1 productsModel:1 productsID:" } [3]=> array(3) { ["products_model"]=> string(1) "/" ["result"]=> bool(false) ["message"]=> string(64) "FAIL product not exists externalID:/ productsModel:/ productsID:" }} Link to comment Share on other sites More sharing options...
xt:Commerce Posted April 17, 2019 Report Share Posted April 17, 2019 Da Fehlen Parameter bei dir im setArticleImages (products_model, external_id) diese müssen gesetzt sein Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.