如何在Mozilla Firefox中使用javascript创建文件

如何在Mozilla Firefox中使用javascript创建文件,javascript,firefox,file,operation,Javascript,Firefox,File,Operation,我想用javascript编写一个函数,创建一个文件并向其中写入一些内容,我正在使用firefox,在这种情况下有人能帮我吗 谢谢…Javascript在客户端上下文中执行 出于安全原因,禁止直接从浏览器写入文件系统。然而,有了html5,就有可能获得离线存储支持 Grz,Kris。来自网站的Javascript无法访问本地文件系统 如果您希望存储数据,请将其存储在服务器上或cookie中。虽然所有回答javascript无法在远程服务器上写入文件的人都是正确的,而且出于安全原因,这是正确的,但

我想用javascript编写一个函数,创建一个文件并向其中写入一些内容,我正在使用firefox,在这种情况下有人能帮我吗


谢谢…

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