Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript在客户端保存文件?_Javascript_Jquery_Jakarta Ee - Fatal编程技术网

如何使用JavaScript在客户端保存文件?

如何使用JavaScript在客户端保存文件?,javascript,jquery,jakarta-ee,Javascript,Jquery,Jakarta Ee,我想将一个JSON对象保存到客户端的一个文件中,以便保存它以备将来使用,我已经尝试了以下步骤 window.open(“数据:text/json;charset=utf-8,”+escape(json.stringify(obj)) 而且很有效!!问题它询问用户要保存的文件的位置和名称。我想要的是,我希望用户完全不知道某些东西正在被保存以供将来使用,或者至少将其保存到尽可能少的用户点击量 如何在window.open()中静态地给出文件名和位置 提前感谢, 编辑 只是为了说明“我不存储任意或不需

我想将一个JSON对象保存到客户端的一个文件中,以便保存它以备将来使用,我已经尝试了以下步骤

window.open(“数据:text/json;charset=utf-8,”+escape(json.stringify(obj))

而且很有效!!问题它询问用户要保存的文件的位置和名称。我想要的是,我希望用户完全不知道某些东西正在被保存以供将来使用,或者至少将其保存到尽可能少的用户点击量

如何在
window.open()
中静态地给出文件名和位置

提前感谢,

编辑

只是为了说明“我不存储任意或不需要的数据。所有用户都是系统的注册用户。”在正常情况下,我不在本地存储任何内容。但是,如果表单提交时网络不可用,我想存储一些JSON对象


一个显而易见的解决方案是使用cookies。因为用户的浏览器设置可能会意外删除Cookie。我需要一种方法来保存数据,直到网络可用。有跨浏览器的支持会更好。

如果你想持久化数据,然后使用,你不能用用户的文件系统玩游戏。

你不能这样做,这是客户端的安全问题。

正如评论中已经提到的,没有用户的明确同意,这是不可能的,因为明显的安全原因。然而,正如注释中提到的,您应该/可以将信息存储在cookie中,当用户返回时,cookie将可检索

像这样的东西就行了

document.cookie="cookie_name="+required_value+"; expires=Monday, 04-Dec-2011 05:00:00 GMT";
显然,过期时间将与您需要信息的持续时间一样长

希望有帮助

我需要跨浏览器支持的值,即使用户更改了浏览器,他/她也应该能够从离开的地方继续。我将信息存储在JSON对象中

我认为用户不希望web应用程序以这种方式与同一台机器上的其他浏览器共享信息。此外,我怀疑许多用户更换浏览器的频率太高,以至于不能保证像这样的侵犯隐私的功能。您应该考虑将信息存储在服务器上(通过强制用户登记或使用OpenID、谷歌、脸谱网等常见帐户)或客户端设置cookie或使用上述存储技术。 如果您真的想将存储的信息限制在同一台机器上的浏览器上,并且不想允许同一用户在不同的机器上访问,那么您可以查看一下似乎独立于浏览器保存的(“Flash Cookie”)。存储LSO不需要任何用户确认

更新:浏览器不再像以前那样支持Flash,现在也不再广泛使用,因此LSO不再是一个好的选择。

文件系统API是HTML5规范的一部分,在现代浏览器中,可以在沙箱中访问某个网站的文件系统,下面是一个很好的教程:

不过,我会选择LocalStorage API,因为它具有更好的浏览器支持:

包装了临时/持久文件系统API,允许您轻松地读/写文件。。。目前仅受Chrome支持,但该规范正在快速发展。:)

Java不是JavaScript。它们是完全独立的语言。此外,您不能仅从浏览器环境强制将文件保存在客户端计算机上。这是一个相当明显的安全措施。@Kapep我需要跨浏览器支持的值,即使用户更改了浏览器,他/她也应该能够从离开的地方继续。我正在JSON对象中存储信息。JSON的正确MIME类型是
application/JSON
;)你的建议会带来重大的安全风险。更不用说烦恼了,你在互联网上访问的每一页都有成千上万的文件堆积在你的硬盘上。如果不是在Windows机器上,您将如何写入C:\Windows\System32\呢?+1,也可以尝试使用-localStorage包装器。我在cookie中有这个值。。实际上,这是我正在(或试图)写入文件中的cookie,以防用户下次更改浏览器或清除cookie…用户将已经是我网站的注册用户。。。我只在暂时没有网络可用的情况下存储数据。。对于所有其他情况(即网络可用时),我不存储任何内容。。。。无论如何,感谢..“此项目所基于的文件系统API已被弃用,大多数主要浏览器不再支持该API。此存储库仅用于存档目的。”“此项目所基于的文件系统API已被弃用,大多数主要浏览器不再支持该API。此存储库仅用于存档目的。”