REST API Artikel-Import "Could not open file://YYXX.jpg for reading"

Hallo zusammen,

mein Artikel-Import steht soweit, jedoch wenn ich mit dem Artikel ein Produktbild hochladen will, funktioniert nichts mehr.

[...]
  ["images"]=>
  array(1) {
    [1]=>
    array(4) {
      ["main"]=>
      int(1)
      ["position"]=>
      int(1)
      ["link"]=>
      string(41) "file://AL_WASS_P00_P01_preview300.jpg"
      ["description"]=>
      string(6) "Tester"
    }
  }
[...]

 

Wenn ich dem Artikel manuell ein schon hochgeladenes Bild zuweisen, funktioniert es:

[...]
  ["images"]=>
  array(1) {
    [1]=>
    array(4) {
      ["main"]=>
      int(1)
      ["position"]=>
      int(1)
      ["link"]=>
      string(125) "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/FuBK_testcard_vectorized.svg/220px-FuBK_testcard_vectorized.svg.png"
      ["description"]=>
      string(9) "Test-Bild"
    }
  }
[...]

 

Kann mir hier jemand bitte weiterhelfen? Ich habe es von mehreren Verzeichnissen aus probiert, jedes mal kommt “could not open file XYZ for reading” mit dem oben aufgeführten Stack-Trace…

 

Liegt das an dem:

=>

Hallo @ent_dev‍,

ob ich habe richtig verstanden , du probierst ein Bild von Local zu Shop hochladen.

also gibt keine Möglichkeit um diese zu machen beim API.

beim ‘link’ du kannst ein gultig link/path/ftp , das kann die Funktion fopen  offnen.

VG,

Tel.: +49 755 - 183 990 00 | Mail: info@enbit.de | Web: http://enbit.de/

1 „Gefällt mir“

Man kann auch sauber vorher alle Bilder per FTP hochladen und einfach dem Request den Link oder URL mitgeben.

Gerade bei sehr vielen Artikeln kann man so die Perfomace um längen verbessern.

 

1 „Gefällt mir“

Wenn du file benutzst, musst du einen Absoluten Path angeben

1 „Gefällt mir“

@ahmadsaad schrieb:

Hallo @ent_dev‍,

ob ich habe richtig verstanden , du probierst ein Bild von Local zu Shop hochladen.

also gibt keine Möglichkeit um diese zu machen beim API.

beim ‚link‘ du kannst ein gultig link/path/ftp , das kann die Funktion fopen  offnen.

VG,

Tel.: +49 755 - 183 990 00 | Mail: info@enbit.de | Web: http://enbit.de/

Danke für deine Antwort!

 

@scriptfarm schrieb: 

Man kann auch sauber vorher alle Bilder per FTP hochladen und einfach dem Request den Link oder URL mitgeben.

Gerade bei sehr vielen Artikeln kann man so die Perfomace um längen verbessern.

Danke für die Antwort. Das verstehe ich nicht ganz, die Bilder lade ich vorher via FTP hoch, sie liegen schon auf dem Shopware-Server, soll ich es also über die Media Resource hochladen?

 

@Shyim schrieb:

Wenn du file benutzst, musst du einen Absoluten Path angeben

Also das XML, welches ich abgreife, liegt in einem Import-Ordner und daraus hole ich mir den Pfad.
Gibt es demnach keinen Weg, bei dem Artikel-Upload parrallell ein Bild hochzuladen?
Danke für deine Antwort!

@scriptfarm schrieb:

Man kann auch sauber vorher alle Bilder per FTP hochladen und einfach dem Request den Link oder URL mitgeben.

Gerade bei sehr vielen Artikeln kann man so die Perfomace um längen verbessern.

Ich habe es soeben mit „ftp“ versucht und erhalte wieder dieselbe Fehlermeldung, meine Produktbilder liegen im Pfad „/tmp/import/“ …

@ent_dev schrieb:

@scriptfarm schrieb:

Man kann auch sauber vorher alle Bilder per FTP hochladen und einfach dem Request den Link oder URL mitgeben.

Gerade bei sehr vielen Artikeln kann man so die Perfomace um längen verbessern.

Ich habe es soeben mit „ftp“ versucht und erhalte wieder dieselbe Fehlermeldung, meine Produktbilder liegen im Pfad „/tmp/import/“ …

 

 

Du muss ein absolut path oder url beim Api eintragen

1 „Gefällt mir“

@ ent_dev

Ich hatte das missverstanden, ich dachte Du gibts nur lapidar den Pfad an und dachtest dadurch kommen die Bilder von alleine in den Shop.

Im Grunde sollte es aber funktionieren, erst der FTP Bilder Upload und dann den API Request starten.

Wenn es scheitert, kann es meistens nur an zwei Dingen liegen, entweder der Pfad oder die Benutzer/Schreibrechte passen nicht…

Einige meiner Kunden synchronisieren so alle 5 Stunden über die WaWi mehrere tausende Artikel und Bilder…

Haben denn die hochgeladenen Bilder die selben Benutzerrechte wie auch das Script und probiere mal die URL (sofern von aussen erreichbar) statt den relativen Pfad mitzugeben.

Ausserdem den “kompletten Pfad” mitgeben, lege einfach mal innerhalb des Shopverzeichnis einen Ordner (/media/ import / images ) an und lade dort die Bilder per FTP rein.

Wenn man zum test einen API Request über den Browser macht, sollte zumindest eine eindeutige Fehlermeldung in der Console zu ermitteln sein.

Eigentlich sollte das so passen und schnell in die Gänge zu bekommen sein…

 

1 „Gefällt mir“

@scriptfarm schrieb:

@ ent_dev

Ich hatte das missverstanden, ich dachte Du gibts nur lapidar den Pfad an und dachtest dadurch kommen die Bilder von alleine in den Shop.

Im Grunde sollte es aber funktionieren, erst der FTP Bilder Upload und dann den API Request starten.

Wenn es scheitert, kann es meistens nur an zwei Dingen liegen, entweder der Pfad oder die Benutzer/Schreibrechte passen nicht…

Einige meiner Kunden synchronisieren so alle 5 Stunden über die WaWi mehrere tausende Artikel und Bilder…

Haben denn die hochgeladenen Bilder die selben Benutzerrechte wie auch das Script und probiere mal die URL (sofern von aussen erreichbar) statt den relativen Pfad mitzugeben.

Ausserdem den „kompletten Pfad“ mitgeben, lege einfach mal innerhalb des Shopverzeichnis einen Ordner (/media/ import / images ) an und lade dort die Bilder per FTP rein.

Wenn man zum test einen API Request über den Browser macht, sollte zumindest eine eindeutige Fehlermeldung in der Console zu ermitteln sein.

Eigentlich sollte das so passen und schnell in die Gänge zu bekommen sein…

@scriptfarm Ich habe nun das Verzeichnis /media/import/images angelegt und sämtliche Produktbilder dort hochgeladen.

Aus dem XML ziehe ich mir den Namen des Produktbild eines Artikels, packe davor den Pfad und erstelle mir so in einer neuen Variablen den gesamten Pfad (Pfad zu images-Ordner + Datei-Namen) und genau da haperts.

 

Meine Variable enthält jedes mal den korrekten Pfad, schmeisst aber immer wieder die oben genannte Fehlermeldung. Gebe ich den Pfand so an, ohne Variable, importiert er korrekt…

Hallo @ent_dev‍,

kannst du bitte ein Beispiel Pfad oder Xml eintragen.

VG,

Tel.: +49 755 - 183 990 00 | Email: info@enbit.de | Web: http://enbit.de/

Hey @ahmadsaad‍,

  ["images"]=>
  array(1) {
    [1]=>
    array(4) {
      ["main"]=>
      int(1)
      ["position"]=>
      int(1)
      ["link"]=>
      string(62) "https://www.xyz.net/media/import/produktbild1.jpg"
      ["description"]=>
      string(13) "Produktbilder"
    }
  }

Rufe ich den Pfad im Browser auf, erscheint das Bild, lasse ich es über die API „verknüpfen“ kommt die Fehlermeldung:

Could not open file „XYZ“ for reading

Hallo @ent_dev‍,

das ist Kommisch wenn du kannst das Bilde beim Browser offen es darf funktioniert.

also kannst du ein external code schreiben und einfach diese Code anrfufen:

fopen('https://www.xyz.net/media/import/produktbild1.jpg', 'rb')

und sehe ob gibt ein Fehler dort oder nicht , ob fopen offnen deine URL dann das Fehler mit API ob nicht dann das Fehler beim deine Server oder Ordnen/Datein permission

VG,

Tel.: +49 755 - 183 990 00 | Email: info@enbit.de | Web: http://enbit.de/

@ahmadsaad schrieb:

Hallo @ent_dev‍,

ob ich habe richtig verstanden , du probierst ein Bild von Local zu Shop hochladen.

also gibt keine Möglichkeit um diese zu machen beim API.

beim ‚link‘ du kannst ein gultig link/path/ftp , das kann die Funktion fopen  offnen.

VG,

Tel.: +49 755 - 183 990 00 | Mail: info@enbit.de | Web: http://enbit.de/

 

Hallo @ent_dev

also ich möchte etwas hier korrikieren .

also wie ich habe geunden in das Code, dass gibt ein möglichkeit um die bilde direct von local zu server hochladen.

beim Base64 Bild .

$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
// dann in deine Api code:

$image['link'] = $base64

VG,

Tel.: +49 755 - 183 990 00 | Email: info@enbit.de | Web: http://enbit.de/