我是一名新手 - 中级程序员,他正在攻击AJAX。在阅读JavaScript时,我发现很奇怪我所使用的大部分示例都使用PHP进行此类操作。我知道你们许多人可能会说“我做错了”或“JavaScript是一种客户端语言”等但问题仍然存在。 。你能用JavaScript写一个文件吗?
答案 0 :(得分:19)
是的,当然可以。它只取决于您的javascript引擎可用的API对象。
但是,您正在考虑的javascript引擎不提供此功能。绝对没有主流的网络浏览器允许它。
答案 1 :(得分:16)
您可以使用Javascript编写Cookie,在较新的浏览器上,您还可以使用SQLite数据库来存储客户端数据。但是,您无法将数据存储在磁盘上的任意位置。
答案 2 :(得分:6)
您可以使用Google Gears之类的东西来生成能够将数据存储在本地缓存或数据库中的JS应用程序。你不能读或写磁盘的任意区域。(这是写于2009年 - Google Gears is now deprecated)
答案 3 :(得分:2)
没有。您可以使用JavaScript为服务器端处理脚本创建AJAX请求,但允许JS直接写入磁盘 - 客户端或服务器端 - 将是一个庞大,令人讨厌,明显,不可原谅的浏览器安全漏洞。 / p>
答案 4 :(得分:2)
简短的回答是否定的;通过在浏览器中使用纯JavaScript,默认情况下不能将文件写入本地磁盘。你需要一个帮手才能做到这一点。例如,TiddlyWiki是一个wiki引擎,它只是一个静态HTML文件,但它可以借助Java applet(Tiddly Saver)将自己写入磁盘。
答案 5 :(得分:1)
您可以在Windows Scripting Host中使用。
答案 6 :(得分:1)
下一版本的chrome(v52)可以通过fetch api + service worker + streams实现这一点,你现在可以使用标志启用流...
您可以转到StreamSaver.js查看如何使用它的一些示例。
您可以这样做:
const writeStream = fs.createWriteStream('filename.txt')
const encoder = new TextEncoder
let data = 'a'.repeat(1024)
let uint8array = encoder.encode(data + "\n\n")
writeStream.write(uint8array)
writeStream.close()
或者继续观看演示:https://jimmywarting.github.io/StreamSaver.js/example.html
答案 7 :(得分:0)
不,Javascript根本不允许访问文件系统,这是浏览器中的安全限制。你可以真正做到这一点的唯一方法是使用ActiveX,但是你限制自己使用IE。
修改强> 正如上面的帖子所述,如果你的引擎允许它可能是可能的,但是我不知道有一个浏览器引擎(这是我为你写的那个asusme),这将允许你。
答案 8 :(得分:0)
如果只需要让用户通过浏览器下载对话框下载文件(.txt
,.csv
,图像和其他文件),则可以使用data URIs带有<a href=... download=.../>
标签。
例如(对于文本文件):
<a href="data:text/plain;charset=utf-8,TEXT_HERE" download="filename.txt"> Click to download </a>
您还可以使用JavaScript设置属性href
和download
,并使用element.click()
触发下载。
但是,如果没有用户确认文件下载对话框,此方法就无法写入文件。