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

如何下载客户端内容

  •  3
  • hoju  · 技术社区  · 14 年前

    我想让用户将文本区域的当前内容下载到他们计算机上的文本文件中。在过去,我会创建一个iframe,指向一个包含数据的url,这将触发一个文件下载对话框。但是这次数据是客户端的。

    那么,是否可以让用户在不发送服务器端的情况下下载数据呢?

    2 回复  |  直到 14 年前
        1
  •  5
  •   bobince    14 年前

    是否可以让用户在不发送服务器端的情况下下载数据?

    一般情况下没有。

    这是有可能的 data: url,如janmoesen的答案所示(尽管您应该是url编码要包含在url中的值,否则当 %nn 序列出现在数据中)。

    但是,这对于非常长的数据来说是不实际的,而且在旧的浏览器或IE中是不可用的(IE8允许短数据URL用于图像,但不允许直接导航)。因此,虽然可以在支持它的浏览器中包含一个数据URL方法来增强进程,但仍然需要一个fa一种llback解决方案,将一组数据发送到服务器端,并让服务器端回吐一个文件作为响应。

    (出于安全原因,这应该只允许在 POST 请求,服务器应该包括 Content-Disposition: attachment 在回应中。否则,内容回显脚本可能会给您带来跨站点脚本问题。)

        2
  •  6
  •   janmoesen    14 年前

    如果它不需要在像ie这样的“老浏览器”中工作,你可以打开一个新窗口 'data:text/plain,' + yourTextarea.value . 然后,用户可以使用“文件/页面”菜单或 Ctrl键 + S .