Shopwareapi Images mit base64 hochladen bzw. aktualisieren

Hallo,

Version Shopware 5.1.5

ich hänge gerade bei der shopware api mit dem Artikelupload und den den Bildern. Ich möchte die Bilder gerne in base64 hochladen. Mein Modul ist in Perl geschrieben. Ich benutze LWP für die Übertragung.

das @array aus welchen ich den json generiere:

$VAR1 = {
          ‚active‘ => 1,
          ‚description‘ => ’

test

Hier war A

fett

',
          ‚images‘ => [
                        {
                          ‚description‘ => ‚testheute‘,
                          ‚extension‘ => ‚jpg‘,
                          ‚path‘ => ‚hahn.jpg‘,
                          ‚position‘ => 3,
                          ‚url‘ => ‚data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEs ~ … ~ c3JGRdb6hRRRavH+rPv8AZ//Z‘
                        }
                      ],
          ‚mainDetail‘ => {
                            ‚inStock‘ => ‚2288.00000‘,
                            ‚number‘ => ‚11215‘,
                            ‚prices‘ => [
                                          {
                                            ‚customerGroupKey‘ => ‚EK‘,
                                            ‚from‘ => 1,
                                            ‚price‘ => ‚1.87000‘
                                          }
                                        ]
                          },
          ‚name‘ => ‚Kopfsalat Wintersalat‘,
          ‚supplier‘ => ‚AR‘,
          ‚taxId‘ => 4
        };

LWP/JSON Request: ‚_content‘ => '{„taxId“:4,„name“:„Kopfsalat Wintersalat“,„description“:"

test

Hier war A

fett

",„mainDetail“:{„prices“:[{„from“:1,„price“:„1.87000“,„customerGroupKey“:„EK“}],„inStock“:„2288.00000“,„number“:„11215“},„supplier“:„AR“,„active“:1,„images“:[{„extension“:„jpg“,„position“:3,„url“:„data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBD~…~Dnc3JGRdb6hRRRavH+rPv8AZ//Z“,„description“:„testheute“,„path“:„hahn.jpg“}]}’,

~…~ ist ein Platzhalter für den Rest

Der LWP/json request sieht auch soweit in Ordung aus und liefert ein success:true. Alle Daten werden auch in die Datenbank geschrieben, auch die ‚description‘ => ‚testheute‘,‚extension‘ => ‚jpg‘,‚path‘ => ‚hahn.jpg‘,‚position‘ => 3 in s_articles_img. Ich find das Bild aber nirgends. Ich hätte gedacht, dass das Bild jetzt unter >shopware/media/ oder >shopware/media/images oder >shopware/media/temp oder >shopware/media/unknown liegen müsste. Was könnte falsch sein oder was hab ich nicht beachtet. Shopware hab ich nicht soviel Ahnung hab aber zu der Api alles Mögliche an Dokumentation gelesen.

Danke

gelöst musste link => anstatt url=> sein

Hallo, das sieht ja interessant aus. Ist das eine Alternative um nicht Bilder parallel erst in einem Bildordner hochzuladen?

Ja das ist eine Alternative. Ich weiss noch nicht wie das mit der Perfomance sich verhält, wenn man mehrere hundert oder tausend Artikel hochlädt. Und ob ich die alten Bilder erst löschen muss.

Ich meine, dass Shopware bei jeder Artikelaktualisierung erneut ein Bild anliegt. D.h. es gibt Performance und irgendwann Speicherplatz Probleme. Man müsste daher immer erst prüfen, ob das jeweilige Bild bereits zugeordnet ist.

                      __options_images  => { replace => 1, },

Löscht alle vorhanden Bilder und ordnet die neuen zu. Ich glaube das geht aber nur mit Shopware 5

hallo woernie

 

wie ist nun dein erfarhungsbericht? funktioniert das? und geht es mit dem base64 nur direct beim artikel erstellen oder auch als medienupload unter /api/media als ‘file’ ?

 

LG

Ja, das läuft soweit alles mit dem medienupload hab ich keine Erfahrung gemacht. Ist zwar jetzt schon ne Weile her, dass ich ca 700 Artikel mit Bildern hochgeladen hatte, aber perfomancetechnisch war es ganz in Ordnung.

Grüße

Woernie