ebertebert MemberComments: 7 Received thanks: 0 Member since: December 2014 edited February 2015
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!

Comments

  • ShopwareianerShopwareianer MemberComments: 3410 Received thanks: 604 Member since: November 2013
    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');
    
  • ebertebert MemberComments: 7 Received thanks: 0 Member since: December 2014
    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:
    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
    Mein Aufruf:
    $objClient->put('articles/2', array(
       'downloads' => array(
           'name' => 'Download-Datei',
           'file' => $strPathToFile,
           'link' => 1
       )
    ));
    
  • ShopwareianerShopwareianer MemberComments: 3410 Received thanks: 604 Member since: November 2013
    Nehme mal folgendes:
    $objClient->put('articles/2', array(
    		array (
    		'downloads' => array(
    		   'name' => 'Download-Datei',
    		   'file' => 'media/pdf/Datenblatt_NEU.pdf'
    		)
    	)
    ));
    
    Das sollte so gehen.
  • ebertebert MemberComments: 7 Received thanks: 0 Member since: December 2014
    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:
    HTTP: 200

    Success
    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?
  • ShopwareianerShopwareianer MemberComments: 3410 Received thanks: 604 Member since: November 2013
    Was sagt denn jetzt der dump des Artikels ?
    Wurde hier ein Pfad hinterlegt, oder der Name ?
  • ebertebert MemberComments: 7 Received thanks: 0 Member since: December 2014
    Das gleiche "downloads"-Array wie zuvor.
    Ein Download war bereits zuvor zugewiesen, der ist immer noch da, aber kein neues Element.
  • kossi_lpckossi_lpc MemberComments: 11 Received thanks: 3 Member since: March 2017

    Hallo,

    Folgender Eintrag im config.php löst das Problem.

    <?php return array (</p>

    ....

    '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.

  • DartaDarta MemberComments: 4 Received thanks: 0 Member since: January 2015

    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?

     

Sign In or Register to comment.