Hi zusammen, ich möchte einem Artikel per API einen Download zuweisen. Die Download-Datei liegt bereits im Dateisystem. Wenn ich mit die Doku dazu anschau, werde ich leider nicht wirklich schlau daraus: http://wiki.shopware.com/REST-API-Artik … Download_2 Nach verschiedenen Versuchen bekomme ich leider immer nur Fehlermeldungen… Mein letzter Versuch schaut so aus: $objClient-\>post('articles/2', array( 'downloads' =\> array( 'name' =\> 'Name der Download-Datei', 'file' =\> $strPathToFile, 'link' =\> 1 ) ));
Kann mich bitte jemand korrigieren? Grüße!
Du möchtest doch einen Artikel aktualisieren oder ? $objClient-\>put
nicht -> post. Welchen Fehler bekommst du denn ? Poste mal bitte eben den Output nur vom Artikel, habe den gerade nicht im Kopf bzw. die Struktur. $objClient-\>get('articles/2');
Hi kayyy, danke schonmal, PUT bringt mich einen kleinen Schritt weiter. Hier mal das „downloads“-Array aus der GET-Abfrage: [downloads] =\> Array ( [0] =\> Array ( [id] =\> 1 [articleId] =\> 2 [name] =\> Datenblatt [file] =\> media/pdf/Datenblatt.pdf [size] =\> 0 ) )
Ich erhalte nun folgende Fehlermeldung: [quote]Errormesage: An exception occurred while executing ‚INSERT INTO s_articles_downloads (articleID, description, filename, size) VALUES (?, ?, ?, ?)‘ with params [2, null, null, null]: SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‚description‘ cannot be null[/quote] Mein Aufruf: $objClient-\>put('articles/2', array( 'downloads' =\> array( 'name' =\> 'Download-Datei', 'file' =\> $strPathToFile, 'link' =\> 1 ) ));
Nehme mal folgendes: $objClient-\>put('articles/2', array( array ( 'downloads' =\> array( 'name' =\> 'Download-Datei', 'file' =\> 'media/pdf/Datenblatt\_NEU.pdf' ) ) ));
Das sollte so gehen.
Hm, wir nähern uns offenbar dem Ziel… $result = $objClient-\>put('articles/2', array( array ( 'downloads' =\> array( 'name' =\> 'Download-Datei', 'file' =\> $strFilename ) ) ));
Dieser Code führt nun immerhin zu einer Erfolgsmeldung: [quote]HTTP: 200 Success[/quote] Allerdings ist dem Artikel kein Download zugewiesen, wenn ich ihn im Backend öffne. Die Datei, die ich zuweisen will existiert definitiv, den Pfad habe ich aus dem Medienmanager kopiert ("/media/pdf/dateiname.pdf", auch schon ohne leading slash versucht). Weitere Ideen?
Was sagt denn jetzt der dump des Artikels ? Wurde hier ein Pfad hinterlegt, oder der Name ?
Das gleiche “downloads”-Array wie zuvor. Ein Download war bereits zuvor zugewiesen, der ist immer noch da, aber kein neues Element.
Hallo,
Folgender Eintrag im config.php löst das Problem.
<?php return array ( .... 'cdn' =\> [ 'liveMigration' =\> true, ], ... Der Grund der ist eim Aufruf der Site wird die URL für den Download generiert. siehe if(!$this-\>container-\>getParameter('shopware.cdn.liveMigration')) in der funktion migrateFileLive($path) im file MediaService.php.Hallo,
leider habe ich das gleiche Problem.
Ich bekomme ein HTTP: 200 Success, der Download wurde aber nicht zugewiesen. Weder im Backend noch im Dump des Artikels ist der Download enthalten.
Das Aktivieren von “liveMigration” in der config.php bringt auch keine Verbesserung.
Woran kann es noch liegen?