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