我想让用户将textarea的当前内容下载到他们计算机上的文本文件中。在过去,我会创建一个指向带有数据的URL的iframe,这将触发文件下载对话框。但是这次数据是客户端。
那么,是否可以让用户下载数据而不发送服务器端?
答案 0 :(得分:6)
如果它不需要在IE等“旧浏览器”中工作,您可以打开一个位置为'data:text/plain,' + yourTextarea.value
的新窗口。然后,用户可以使用文件/页面菜单或 Ctrl + S 保存该文件。
答案 1 :(得分:5)
是否可以让用户下载数据而不发送服务器端?
一般情况下没有。
可以使用data:
网址,例如janmoesen的答案(尽管您应该对要包含在网址中的值进行网址编码,否则当%nn
序列出现时您可能会面临损坏数据)。
然而,对于非常长的数据,这变得不切实际,并且在旧浏览器或IE中不可用。 (IE8允许短数据URL用于图像,但不能用于直接导航。)因此,虽然您可以包含数据URL方法来增强支持它的浏览器的过程,但您仍需要一个后备解决方案来发送一个将数据发送到服务器端并让它将文件作为回应进行吐出。
(出于安全原因,这应仅在POST
请求中允许,并且服务器应在响应中包含Content-Disposition: attachment
。内容回显脚本可以为您提供跨站点脚本问题否则。)
答案 2 :(得分:0)