代码之家  ›  专栏  ›  技术社区  ›  MegaByte

使用ajax和webservice下载文件

  •  1
  • MegaByte  · 技术社区  · 14 年前

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

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

    1 回复  |  直到 14 年前
        1
  •  2
  •   Sky Sanders    14 年前

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

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

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

    解决这个问题的可能办法 能够 IFrame是一种常用的隐藏数据获取技术。

    只是有一个合适的(隐藏的?)表单正确地发布到web服务并指向它的 action 在其上捕获 Load

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

    实现你想做的事情的唯一可行的方法就是拥有一个 地方的 服务器端脚本,可以充当HTML/JavaScript和外部web服务之间的代理。

    使用这样一个代理,您可以简单地回到使用Ajax来获取数据,以便为Downloadify提供服务。

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