Angular-CLI使用MTOM下载文件

时间:2018-07-25 12:51:34

标签: angular file download mtom

是否可以通过使用MTOM的SOAP Web服务在Angular-CLI中实现文件下载请求?

乍看之下,它似乎应该受到支持并且实现起来非常简单(在服务器端,这非常简单),但是在搜索了整个Google一周之后,我们提出了一个大型ZIP。 / p>

毕竟,这只是一条多部分的消息(对于如何在Angular中进行管理,这都不会产生任何有用的Google Hits),第一部分是soapEnvelope(我们需要解析以获得某些信息),而二进制文件中的数据第二部分..像这样..

--uuid:554fa566-3182-4242-b6c8-c9495056135c
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> 
<soap:Body><ns2:downloadResponse xmlns:ns2="http://ws.XXX.XXX.XX/"> 
<return><errorCode>0</errorCode><document><xop:Include 
xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:caf7b6bc-d351- 
465b-8d83-7094e6cf20ad-6@cxf.apache.org"/></document></return> 
</ns2:downloadResponse></soap:Body></soap:Envelope>
--uuid:554fa566-3182-4242-b6c8-c9495056135c
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <caf7b6bc-d351-465b-8d83-7094e6cf20ad-6@cxf.apache.org>
Content-Disposition: attachment;name="xxx.doc"

..BINARY DATA HERE..

这是从我们的服务器发送到客户端的信息的真实示例。名称已更改,以保护无辜者。

我们收到的是POST中指定的responseType:'blob',令人惊讶的是PDF会显示所有这些无关紧要的废话。WORD,EXCEL和其他所有内容都具有上面所看到的。 Angular(最好是在Chrome中调试)确实从blob中获得了足够的信息,可以将响应键入为“多部分/相关”。这来自何处以及如何处理是一个谜。

Google员工真的必须为此提供一个简单的解决方案。任何参与者?

是的,我们已经考虑过在SOAP信封内使用base64编码,但是我们必须考虑可能非常大(数百MB)的文档,而这似乎是一个非入门类。

在这方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以将响应转换为字符串,删除xml数据,并仅在响应上保留RAW。它将毫无问题地呈现。