【问题标题】:Download file using ajax and webservice使用 ajax 和 webservice 下载文件
【发布时间】:2011-02-06 16:08:32
【问题描述】:

有这个第 3 方网络服务。可用的公共网络方法之一是 GetDocument() 方法。此方法返回一个 Document 对象。 Document 对象具有 File(byte[])、ContentType(string) 等属性。

我的问题:我可以使用 javascript(mootools) + ajax + JSON 订阅此服务,返回文档对象,在本例中为 excel 文档,然后强制下载文件吗?

【问题讨论】:

    标签: javascript ajax web-services


    【解决方案1】:

    确实,通常您无法从 JavaScript 启动下载,但有一个 flash 组件 Downloadify 可以启用客户端文件生成。

    所以您可以提供从 HTML/JavaScript 下载的文件。

    解决了这个问题后,您仍然面临如何从源 Web 服务获取您希望提供的数据的问题。

    第 3 方暗示 XSS(跨站脚本),这是使用 XmlHttpRequest (Ajax) 的禁忌。

    此问题的一个可能解决方案可能是使用一种常见的隐藏 IFrame 技术来获取数据。

    只需有一个适当的(隐藏的?)表单,正确地发布到 Web 服务,并将其 action 指向一个隐藏的 IFrame 元素,在该元素上捕获 Load 事件并解析返回的数据。

    但是当前的浏览器具有不同级别的安全措施,限制了您使用外部源访问 IFrame 的能力,因此您实际上被困在这里。很抱歉让您寄予厚望。

    完成您想做的事情的唯一实用可靠的方法是拥有一个本地服务器端脚本,该脚本可以充当您的 HTML/JavaScript 和外部 Web 服务之间的代理。 p>

    使用这样的代理,您可以简单地返回使用 Ajax 来获取您的数据以通过 Downloadify 提供服务。

    但是,既然您使用服务器脚本来获取数据,为什么不直接从脚本中提供数据以供下载呢?

    这些只是我对您提出的问题领域的观察。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 2022-10-12
      • 2015-06-01
      • 2011-01-08
      • 2014-10-26
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多