Bild im Unterordner(!) per API anlegen

Ich versuche in einem bestimmten Ordner dessen mediaFolderId ich habe, ein Bild hochzuladen. Das geschieht ja wie hier Produkt-Bilder über API hochladen? - #4 von canetti2 beschrieben in 2 Schritten. Für mich ist jetzt aktuell nur der 1 Schritt interessant.

Ich kann durchaus Bilder hochladen und nun auch Ordner anlegen. (Ordner per API anlegen - #11 von tomquenten)

ABER ich möchte nun im nächsten Schritt die Bilder in einen bestimmten Ordner hochladen. Dazu habe ich aktuell folgendes probiert.

Ich sende per POST an media?_response=true

{
    "key": "write",
    "action": "upsert",
    "entity": "media",
    "payload": 
        {
            "mediaFolderId": "485a901efe5e42a99a7a2f9cbca273db"
        }
}

Damit bekomme ich eine neue Medien ID zurück, jedoch nicht in dem angegebenen Ordner. Wie kann das sein? Ich gebe doch die mediaFolderId mit!

Zweiter Versuch…manchmal sind es ja nur Schusselfehler

{
    "key": "write",
    "action": "upsert",
    "entity": "media_folder",
    "payload": 
        {
            "mediaFolderId": "485a901efe5e42a99a7a2f9cbca273db"
        }
}

Gleiches Ergebnis…MedienID ja, aber nicht in dem Ordner wo diese hin soll.

Dritter Versuch zum Test

{
    "key": "write",
    "action": "upsert",
    "entity": "media",
    "payload": 
        {
            "mediaFolderId": ""
        }
}

Auch hier bekomme ich einen Medien ID zurück.

Die medienFolderId scheint vollkommen egal zu sein, die API gibt mir einfach eine Medien ID zurück die im Medien Basisverzeichnis liegt.

Die Suchfunktion gibt mir nichts passendes zurück. Probiert habe ich es mit
bild upload in Ordner
bild upload Ordner
bild upload Unterordner
bild upload medienFolder
bild upload medienFolderID

Evenvtuell fehlen mir nur die richtigen Begrifflichkeiten.

Wie bekomme ich per API eine MedienID in einem ANGEGEBENEN ORDNER? :frowning:

tomquenten

Der Weg wäre zunächst einen Folder zu erzeugen. Dann beim erzeugen des media Elements, die ID auf der Clientseite zu erzeugen

{
    "key": "write",
    "action": "upsert",
    "entity": "media",
    "payload": 
        {
            "id": "CLIENT_CREATED_UUID",
            "mediaFolderId": "UUID"
        }
}

Auch das hatte ich schon ausprobiert.

{
    "key": "write",
    "action": "upsert",
    "entity": "media",
    "payload": {
        "id": "25f9e794323b453885f5181f1b624d0b",             //mit php md5(productId) erzeugte mediaId
        "mediaFolderId": "485a901efe5e42a99a7a2f9cbca273db"   //id eines bestehenden Ordners unterhalb von Product Media
    }
}

gesendet per POST an media?_response=true
und als Antwort folgendes erhalten…

object(stdClass)#145 (3) {
  ["data"]=>
  object(stdClass)#119 (6) {
    ["id"]=>
    string(32) "450b125cfb864b6a96c4ede4c09b1e15"
    ["type"]=>
    string(5) "media"
    ["attributes"]=>
    object(stdClass)#117 (19) {
      ["userId"]=>
      NULL
      ["mediaFolderId"]=>
      NULL
      ["mimeType"]=>
      NULL
      ["fileExtension"]=>
      NULL
.
.
.
.

Die MediaFolderId wird einfach ignoriert.
Noch eine Idee? :frowning:

tomquenten

Einfach nur ein POST mit diesem Json im Body
{"id":"25f9e794323b453885f5181f1b624d0b","mediaFolderId":"485a901efe5e42a99a7a2f9cbca273db"}

an URL:
/api/media

mit welcher Programmiersprache arbeitest Du denn hier ? Und das passiert dann RAW oder mit einer Bibliothek ? Die anderen Sache gehören in das Batch-Processing …

ich mache das immer erstmal mit Postman und wenn es dann passt, kann man das entsprechend in Code übertragen …

herzlichst

CH

@chamaw, vielen Dank für den Hinweis!

FALSCHE ANFRAGE

{
    "key": "write",
    "action": "upsert",
    "entity": "media",
    "payload": {
        "id": "25f9e794323b453885f5181f1b624d0b",             //mit php md5(productId) erzeugte mediaId
        "mediaFolderId": "485a901efe5e42a99a7a2f9cbca273db"   //id eines bestehenden Ordners unterhalb von Product Media
    }
}

RICHTIGE ANFRAGE

 {
  "id": "25f9e794323b453885f5181f1b624d0b",             //mit php md5(productId) erzeugte mediaId
  "mediaFolderId": "485a901efe5e42a99a7a2f9cbca273db"   //id eines bestehenden Ordners unterhalb von Product Media
 }

Das obere Schema ist für den Sync Endpunkt bestimmt…das hatte ich vollkommen übersehen.

sprich jetzt funktioniert es wie gewollt ?

Genau so ist. Man braucht eben ab und an einen Gedankenanstoß. :slight_smile: