Leere Datei wird an einen Amazon S3 Server übertragen

Hallo zusammen,

aktuell haben wir folgendes Problem.
Zuerst zum Kontext:
GLS hat vor kurzem auf ihre Document Management und Customs V3 API umgestellt. Zunächst holen wir uns über einen POST Call eine documentID, upload_URL und download_URL. Im nächsten API Call laden wir die Dokumente dann per PUT an die angegebene upload_URL hoch.

Die Dokumente bekommen wir über den Stepp „PlentyGetOrderDocuments“ und hängen diese per ${meta.documentFiles@PlentyGetOrderDocuments_2!} direkt an den PUT Call an.

Das Problem ist dass auf dem S3 Server die Datei leer hochgeladen wird. Hier wissen wir nicht genau warum. Wenn wir hinter „PlentyGetOrderDocuments“ noch einen FTP Upload hängen und die Dokumente darauf hochladen, können wir sie öffnen da diese „ganz“ übertragen werden.
Geschickt werden die Calls über den Stepp „SpreadsheetUrlDownload“.

Gibt es hier die Möglichkeit gezielt das Encoding auf binary zu setzen ? Aktuell haben wir die Vermutung dass aufgrund einer falschen Enkodierung der S3 Server die Datei zwar akzeptiert, den Inhalt aber nicht erkennt / überträgt.

Viele Grüße
Oliver

Hallo @eRocket-Oliver_Widrinski,

du könntest mal versuchen den BodyContentType auf multipart/form-data; charset=ISO-8859-1 zu setzen und/oder als requestHeaders Content-Transfer-Encoding="BINARY" zu benutzen.

Viele Grüße
Lukas

Hallo @synesty-Lukas,

ich hatte es jetzt mal so angepasst:
image

Leider hat auch das nicht funktioniert. Zwar habe ich, als ich das Dokument runterladen wollte, eine Rückmeldung vom Endpoint bekommen, das Dokument ist aber weiterhin leer.

Hallo Oliver,

In welchem Feld hast du das ${meta.documentFiles@PlentyGetOrderDocuments_2!} ?
Das wird wahrscheinlich nicht funktionieren. Die Dateien müssten mit dem fileToUpload


verknüpft werden.

Viele Grüße
Torsten

Hallo @synesty-Torsten ,

${meta.documentFiles@PlentyGetOrderDocuments_2!}

stand ursprünglich im requestBody der Anfrage mit drinnen. Das habe ich jetzt mal durch den Einsatz des Felds filtToUpload ersetzt und mit den Ergänzung von Lukas erweitert.
Leider hat auch das nicht funktioniert.

Würde es euch ggf. helfen wenn ihr ich euch den Log der Ausführung zukommen lassen würde ?

Viele Grüße
Oliver

Hallo Oliver,

eine wichtige Einstellung hatte ich vorhin nicht erwähnt. Im Feld fileNameInList muss noch der Name der Datei rein, die hochgeladen werden soll.

Wenn du als Input das Output Spreadsheet des PlentyGetOrderDocuments Steps verwendest, kannst du in fileNameInList den Wert ${OrderID!}_${Type!}_${NumberWithPrefix!}.pdf verwenden.

Falls das nicht hilft kannst du uns gerne den Debug Log von der Flow Ausführung (per Ticket) schicken.

Viele Grüße
Torsten

Guten Morgen @synesty-Torsten ,

der Vorschlag von dir passt soweit. Es gibt jedoch noch ein Problem.
In deinem Beispiel nimmst du ja bei „fileNameList“ direkt den Input aus dem „PlentyGetOrderDocuments“ Stepp. Jedoch brauche ich bei „input“ einen anderen Stepp. Dieser ist ein Mapper der aber auch das FileName bereits enthält. Im Vergleich zu den Metadaten der aus dem „PlentyGetOrderDocuments“ ist der Name identisch.

Als Beispiel:
Im Mapper steht bei „FileName“ 5069372_pro_forma_invoice_PR23-937.
image

Wenn ich mir über einen TextHTMLWriter die Metadaten von dem Dokument hole, ist der Name identisch. Hier ist der Name im Mapper:
image

Wenn ich den API Call aber ausführen möchte, kommt folgende Fehlermeldung:
image

Als Test hatte ich bereits dem Namen fest in das Feld „fileNameList“ reingeschrieben. Der Call ist auch für das Dokument durchgegangen und wurde mit dem Status 200 zurückgegeben.

Viele Grüße
Oliver

Hallo Oliver,

ich glaube da fehlt noch ein „.pdf“ am Ende des FileNames.

image

In fileNameInList muss immer der vollständige Dateiname aus der filesToUpload Liste angegeben werden. Die Dateinamen findest du in der Vorschau des PlentyGetOrderDocuments Steps:

Viele Grüße
Torsten

Hallo @synesty-Torsten ,

habe es jetzt hinbekommen :slight_smile: .
Ich habe einiges ausprobiert, aber im Endeffekt hat folgendes probiert.

Hinter dem Mapper, den ich als Input brauche, habe ich ein SpreadsheetAppend eingefügt. Dieser fügt den besagten Mapper und das Ergebnis des PlentyGetOrderDocuments Steps zusammen und wird anschließend auf die OrderID gruppiert.

So konnte ich dann in fileNameList ${OrderID!}_${Type!}_${NumberWithPrefix!}.pdf einpflegen.
Alles andere hat nicht funktioniert.

Also vielen Dank für die Hilfe.

Viele Grüße und schon mal ein schönes Wochende
Oliver