如何在Mulesoft 4.2 Dataweave 2.2中导航多部分/表单数据?

问题描述 投票:0回答:1

我正在尝试从Dataweave 2.2的multipart / form-data中获取内容。我只想从有效负载的第二部分发回pdf。我没有运气用Dataweave解析此有效负载。

我的数据编织代码仅为payload.parts,但出现以下错误。

org.mule.runtime.core.api.expression.ExpressionRuntimeException: "Multipart Object does not have `parts` field defined. Expecting type is
{
  preamble?: String, 
  parts: {
    _*: {
      headers: Object, 
      content: Any
    }
  }
}, while writing MultiPart at payload.parts." evaluating expression: "payload.parts".

这是我的有效载荷。我修剪了xml和文件内容以提高可读性。

--MIMEBoundary_fdb504344c826b00b136f8946dec737661b743b37d6dc8c4
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
Content-ID: <[email protected]>

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"></soapenv:Envelope>
--MIMEBoundary_fdb504344c826b00b136f8946dec737661b743b37d6dc8c4
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <[email protected]>

%PDF-1.4
%����
1 0 obj
<<
/Creator (Smart Communications)
/Producer (Smart Communications)
/CreationDate (D:20200115094841-05'00')
>>
endobj
2 0 obj
<<
  /N 3
  /Length 3 0 R
  /Filter /FlateDecode
>>
stream
x���wXS���sN�`$!l{��@
dataweave mulesoft
1个回答
0
投票

您的问题是您的表达式没有定义输出,这意味着DataWeave将尝试使用可用信息来推断它。由于表达式中使用的payload是多部分,它将推断该格式为输出,但payload.parts不是有效的多部分,因此您会失败。考虑到您的用例,您可能应该直接将PDF部分提取为二进制内容:

output application/octet-stream
---
payload.parts[1].content

只需记住设置实际的PDF MIME类型(我假设您使用的是set-payload

© www.soinside.com 2019 - 2024. All rights reserved.