Beantwortet

Artikelbilder per API hochladen?


Benutzerebene 4
Abzeichen +2

Wir würden für Artikel gerne Etikettenbilder und Shopbilder per API hochladen.

Die API-Doku sagt leider nichts dazu, wie man die hochgeladene Datei mit einem “Typ” (hier Artikel) verknüpft und wie man die Stichwörter der Datei festlegt (Shopbild/Etikettenbild).

https://update.xentral.biz/apidoc/docs203.html#v1_dateien_post

Falls es so gedacht ist, dass man die Datei erst hochlädt und dann mit dem Artikel verknüpft, dann sagt die Doku auch nichts, wie man diese Verknüpfung herstellt. Scheinbar kann man Artikeldaten per API nicht mal ändern sondern nur abfragen.

https://update.xentral.biz/apidoc/docs203.html#v1_artikel__id_

Die berüchtigte “postman_collection.json” hilft auch nicht weiter, darin finde ich nicht mal ein Beispiel zu Dateiupload.

Weiß jemand was oder hat das schonmal gemacht?

icon

Beste Antwort von Daniel Schmidtchen 1 August 2022, 11:29

Original anzeigen

7 Antworten

Benutzerebene 7
Abzeichen +5

In den Release Notes hatte ich vor kurzem dazu folgendes gesehen:

Patch Version 22.3.6

Release date 19-July-2022

Improvements

API (PIM-428)

The /api/v1/dateien API endpoint now supports the upload of product images by adding the new parameters keyword_object (like "artikel"), keyword_subject, and keyword_parameter (id of product).

Benutzerebene 4
Abzeichen +2

Oh, das hört sich vielversprechend an, danke für den Hinweis!

Wäre schön, wenn sowas halt in der Doku stünde.

Benutzerebene 4
Abzeichen +2
curl --digest -su "$USER:$PASSWORD" \
-d file_content=@"$file" \
-d titel="Etikettenbild" \
-d dateiname="$properFilename" \
-d keyword_object="artikel" \
-d keyword_subject="Etikettenbild" \
-d keyword_parameter="$articleId" \
"https://xxx.xentral.biz/api/v1/dateien"

Funktioniert!

Benutzerebene 4
Abzeichen +2

PS:

Statt

-d file_content=@”$file”

muss da stehen:

--data-urlencode file_content@"$file"

Hey @Jakob Schöttl , 

danke dir erstmal für deinen Beitrag. Ich habe das Feedback mal mitgenommen und werde das intern weiterleiten, sodass wir die Doku dazu auch updaten können. 

Es freut mich auch sehr, dass dir hier so schnell geholfen werden konnte! Das ist ja schon fast ein neuer Rekord @Daniel Schmidtchen ! ;) 

Danke dir außerdem für das Teilen deines Codes, Jakob. Durch das Teilen des Codes und sogar des PS, hilfst du mit Sicherheit in Zukunft noch weiteren Mitgliedern. :) 

LG 

Benutzerebene 2
Abzeichen

Moin @Jakob Schöttl 

ich stehe auf dem Schlauch….

Wie übergebe ich denn das Artikelbild per file_content@"$file" ?

In Postman läuft der API-Call soweit durch, aber xentral legt das JPG immer als Textdatei an mit dem Value von file_content (aslo dem Dateipfad).

Das sieht in xentral dann so aus:

Wie übergeb ich das Bild als Raw-Datei?

Danke schon mal für Deine Hilfe!

Benutzerebene 4
Abzeichen +2

Hi, ich kenne Postman nicht. Aber ich glaub das Problem ist, dass diese curl-Syntax mit @”filepath” nicht funktioniert. Stattdessen wird bei dir nur der Dateiname hochgeladen (deswegen text/plain).

Weiß jetzt nicht mehr auswendig, wie curl den Dateiinhalt kodiert, vermutlich auch x-www-form-urlencoded. Aber wie du die Bilddatei unter Windows so kodierst und den sehr sehr langen String dann in Postman einfügst weiß ich nicht. Vllt hat dein Programm ja eine andere Möglichkeit das Bild zu kodieren und dann zu übergeben?

Antworten