Produkt-Bild Upload per API

Thema wurde von Dominik Dehning, 8. Mai 2023 erstellt.

  1. Dominik Dehning
    Dominik Dehning Aktives Mitglied
    Registriert seit:
    21. März 2023
    Beiträge:
    41
    Danke erhalten:
    30
    Danke vergeben:
    39
    Hallo zusammen,

    ich stehe aktuell etwas auf dem Schlauch:

    Ich habe verschiedene Ansätze für "upload_product_image" probiert (file_get_contents, CURLFile), die alle im Ergebnis dazu führen, dass ich entweder ein HTTP 400 oder 415 (Unsupported Media Type) bekomme.

    Verwirrend ist auch, dass in der Doku einerseits steht
    Make this request without the "Content-Type: application/json".
    Gleichzeitig aber im Beispiel der Content-Type verwendet wird.

    Hat schon mal jemand diesen Teil der API erfolgreich genutzt?

    Vielen Dank!
     
  2. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    17. Oktober 2018
    Beiträge:
    140
    Danke erhalten:
    78
    Danke vergeben:
    18
    Hallo ddehning,

    ich habe die API auf diesem Endpunkt schon erfolgreich angesprochen, aber nicht mit PHP sondern mit curl.

    Im Prinzip ist es ein Abschicken eines HTML-Formulars. Der Hinweis darauf steht in der Doku in der Überschrift: "Form Parameters". In der Tat ist die Doku hier nicht sehr klar, bzw. falsch. Die Header-Parameter accept und content-type sind dort meiner Meinung nach vertauscht. Richtig sollte es wohl so sein:

    Code:
    "accept: application/json"
    und
    "content-type: multipart/form-data"
     
  3. Dominik Dehning
    Dominik Dehning Aktives Mitglied
    Registriert seit:
    21. März 2023
    Beiträge:
    41
    Danke erhalten:
    30
    Danke vergeben:
    39
    Tatsächlich hat mir das nicht komplett geholfen, aber auf die richtige Spur gebracht.
    Zusätzlich Hilfe war dieser Post.

    Aus eigener Blödheit ist folgendes passiert:
    1. CURLOPT_POSTFIELDS wurde von mir weiterhin mit JSON-Daten befüllt.
    2. Für die API-Anbindung benutze ich eine selbst geschriebene Klasse, die mir die benötigten Einstellung für Curl automatisch vornimmt. Hierbei wurden bestehende Einstellungen in einer Schleife teils nicht überschrieben. Als Ergebnis hatte das erste Bild immer "Content-Type: application/json", alle nachfolgenden wurden mit korrekten Headern ausgeliefert, aber die API hat aufgrund des ersten Fehlers die Anfragen mit eben diesem abgelehnt (soll das so sein?)
    Problem konnte also gelöst werden. Vielen Dank für die Hilfe!

    (alles bezieht sich auf Gambio 4.6.0.2)