Tengo un punto final SFTP entrante que recupera los archivos y quiero hacer una publicación HTTP con archivos junto con otros datos (texto) como se adjunta en la captura de pantalla. De acuerdo con la documentación de la mula, la carga útil debe ser un archivo adjunto saliente que estoy haciendo usando la propiedad Set Attachment. Con este enfoque, estoy configurando el Tipo de contenido para uno de mis archivos adjuntos como aplicación / XML (ya que mi archivo es de tipo XML) y como texto / plano para el otro parámetro. ¿Alguna idea sobre cómo lograr esto? He adjuntado la captura de pantalla de cómo se ve la solicitud en Postman.

enter image description here

1
ROA 14 dic. 2016 a las 23:06

2 respuestas

La mejor respuesta

Supongamos que está recibiendo un archivo PDF (cambie el tipo de contenido según el tipo de archivo) desde el punto final de entrada SFTP y desea enviar ese archivo a HTTP, entonces debe crear lo siguiente antes de enviar la solicitud al punto final HTTP:

<set-attachment value="<byte-array-contents>" contentType="application/pdf" attachmentName="file" doc:name="Attachment" />

Y

<set-attachment value="some-info" contentType="text/plain" attachmentName="metadata" doc:name="Attachment" />

Además, asegúrese de configurar la carga útil como nula como se muestra a continuación

<set-payload value="#[null]" />

Finalmente, invoque / envíe la solicitud al punto final HTTP.

1
Sagar Chaudhari 14 dic. 2016 a las 22:07

A continuación se muestra una respuesta más actualizada, aplicable a Mule 4.2.2 EE con DataWeave 2.0.

Simplemente agregue un conector "set payload", con el siguiente script DataWeave:

%dw 2.0
import dw::module::Multipart
output multipart/form-data
---
{
  parts: {
    part1: Multipart::field({name:"part1FieldName", value: "part 1 value", mime: "application/octet-stream"}),
    part2: Multipart::field({name:"part2FieldName", value: "part 2 value", mime: "application/json"})
  }
}

Alexis

2
Alexis 18 jun. 2020 a las 16:57