【问题标题】:Angular-CLI for file downloads using MTOM使用 MTOM 进行文件下载的 Angular-CLI
【发布时间】:2019-01-02 07:13:40
【问题描述】:

有没有办法在 Angular-CLI 中从使用 MTOM 的 SOAP Web 服务实现文件下载请求?

乍一看,它似乎应该被支持并且实现起来非常简单(在服务器端它非常简单),但是在谷歌搜索了一个多星期之后,我们想出了大 ZIP。

毕竟,它只是一个多部分消息(对于如何在 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 的信息来将响应键入为“多部分/相关”。这来自哪里以及如何处理它是一个谜。

谷歌的人真的必须有一个简单的解决方案。任何接受者?

是的,我们已经在 SOAP 信封中考虑过 base64 编码,但我们必须考虑可能非常大(数百 MB)的文档,而且这似乎是一个非首发。

在这件事上的任何帮助将不胜感激。

【问题讨论】:

    标签: angular file download mtom


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2017-10-17
      • 2014-04-07
      • 1970-01-01
      相关资源
      最近更新 更多