如何在Mozilla Firefox中使用javascript创建文件
我想用javascript编写一个函数,创建一个文件并向其中写入一些内容,我正在使用firefox,在这种情况下有人能帮我吗如何在Mozilla Firefox中使用javascript创建文件,javascript,firefox,file,operation,Javascript,Firefox,File,Operation,我想用javascript编写一个函数,创建一个文件并向其中写入一些内容,我正在使用firefox,在这种情况下有人能帮我吗 谢谢…Javascript在客户端上下文中执行 出于安全原因,禁止直接从浏览器写入文件系统。然而,有了html5,就有可能获得离线存储支持 Grz,Kris。来自网站的Javascript无法访问本地文件系统 如果您希望存储数据,请将其存储在服务器上或cookie中。虽然所有回答javascript无法在远程服务器上写入文件的人都是正确的,而且出于安全原因,这是正确的,但
谢谢…Javascript在客户端上下文中执行
出于安全原因,禁止直接从浏览器写入文件系统。然而,有了html5,就有可能获得离线存储支持
Grz,Kris。来自网站的Javascript无法访问本地文件系统
如果您希望存储数据,请将其存储在服务器上或cookie中。虽然所有回答javascript无法在远程服务器上写入文件的人都是正确的,而且出于安全原因,这是正确的,但您仍有可能实现此目标 例如,如果您想使用javascript在您的网站上创建一个文件,您可以使用一些服务器端脚本语言和AJAX调用 例如: 您的服务器上有一个名为
update\u last\u access.php
的文件,它将创建一个文件,将上次访问该文件的时间存储在任意文件中
如果让javascript函数对该脚本进行AJAX调用,例如在jquery中
$.get("update_last_access.php")
然后执行服务器端脚本并写入文件
在为您提供更多帮助之前,您必须澄清您正在尝试做什么。您可以使用Firefox 3.6从JavaScript文件系统读取文件-例如,请参阅我的
但是,您不能直接从JavaScript编写文件。您必须通过服务器。您可以在Firefox中用JavaScript编写文件,但必须使用XPCOM对象(内部浏览器API)。这对于从网页加载的JavaScript是不允许的,并且它旨在由运行在Firefox插件中的JavaScript使用(具有高级别的权限) 有一种方法可以让非特权(网页)JavaScript请求更多权限,如果用户授予它(会出现一个弹出对话框请求权限),网页代码将能够写入文件 但在进一步阅读之前,请注意: 这不是标准的JavaScript,我不推荐这种方法,除非您正在开发一个非常特定的应用程序,该应用程序将以非常特定的方式使用(例如,客户端JavaScript HTML-only wiki) 在网站上请求XPCOM权限是一种糟糕的做法!这基本上相当于运行刚从站点下载的.exe。您要求用户以运行Firefox的用户的身份授予对其计算机的完全访问权(读、写、执行) 请求使用XPCOM的权限(这将提示用户确认,无法避免): 然后,使用XPCOM对象写入文件(来自Mozilla Developer Network的示例代码):
您可以在此处使用XPCOM在Firefox中找到有关I/O的更多信息:将有一个用于此的API。。文件编写器API。早期规范如下: 它还没有在任何浏览器中实现
更新:似乎已经存在一个实现。检查一下,Mozilla计划将FileSaver添加到Gecko 9:
但它显示了一些错误,如“未定义创建对象”。我回答这个问题时考虑到它指的是在客户端创建文件,就像TiddlyWiki一样。一些人在解释您询问JavaScript是否可以在服务器端创建文件时拒绝了这个问题。也许你应该澄清一下。
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
1. // file is nsIFile, data is a string
2. var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].
3. createInstance(Components.interfaces.nsIFileOutputStream);
4.
5. // use 0x02 | 0x10 to open file for appending.
6. foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
7. // write, create, truncate
8. // In a c file operation, we have no need to set file mode with or operation,
9. // directly using "r" or "w" usually.
10.
11. // if you are sure there will never ever be any non-ascii text in data you can
12. // also call foStream.writeData directly
13. var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
14. createInstance(Components.interfaces.nsIConverterOutputStream);
15. converter.init(foStream, "UTF-8", 0, 0);
16. converter.writeString(data);
17. converter.close(); // this closes foStream