How to create a file using javascript in Mozilla Firefox

旧巷老猫 提交于 2019-12-01 00:24:37

问题


I want to write a function in javascript which creates a file and write some content to it, iam working with firefox, can anybody help me in this case.

Thanks...


回答1:


You can write files in JavaScript in Firefox, but you have to use an XPCOM object (internal browser API). This is not allowed for JavaScript loaded from a web page, and it is intended to be used by JavaScript running inside a Firefox add-on (with high level of privileges).

There is a way for unprivileged (web page) JavaScript to request more privileges and if the user grants it (there will be a pop up dialog asking for permission), the web page code would be able to write to a file.

But before you read further, a warning:

This is not standard JavaScript and I would not recommend this approach unless you are developing a very specific application, that will be used in a very specific way (like for example, http://www.tiddlywiki.com/ a client-side JavaScript-HTML only wiki).

Requesting XPCOM privileges on a website is a bad practice! It's basicly equivalent to running an .exe you just downloaded from a site. You are asking a user to grant full access to their computer (read, write, execute) with the identity of the user running Firefox.

Request permission to use XPCOM (this will prompt the user for confirmation, no way to avoid it):

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

Then, write to a file using an XPCOM object (example code from Mozilla Developer Network):

   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  

You can find more information about I/O in Firefox using XPCOM here: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O




回答2:


Javascript from websites cannot access the local file system.

If you like to store data either store it on the server or in a cookie.




回答3:


writing to the file system directly from a browser is prohibited for security reasons. With html5 however it'll be possible to have offline storage support. Take a look here.

Grz, Kris.




回答4:


Javascript executes in a client-side context.

http://www.tek-tips.com/viewthread.cfm?qid=1171273&page=1




回答5:


There will be an API for this.. File Writer API. The early specification is here: http://www.w3.org/TR/file-writer-api/ It is not implemented in any browser yet.

Update: It seems there already exists an implementation. Check out http://caniuse.com/filesystem and http://www.html5rocks.com/en/tutorials/file/filesystem/




回答6:


While everyone who's responded that javascript does not have the ability to write files on a remote server are correct, and this is true for security reasons, what you want to accomplish may still be possible.

For example, if you wanted to make it possible to create a file on your website with the use of javascript, you can do so with some server side scripting language and and AJAX call.

Example:

You have a file on your server called update_last_access.php which will create a file which stores the last time the file was accessed in some arbitrary file.

If you then had your javascript function make an AJAX call out to that script, for instance, in jquery

$.get("update_last_access.php")

Then this would execute the server side script and write to the file.

Before any more help can be provided for you, you're going to have to clarify what you're trying to do.




回答7:


You can read files from the filesystem in JavaScript with Firefox 3.6 - see my EPUB reader proof of concept, for example.

You can't write files directly from JavaScript, though. You have to go via a server.




回答8:


Mozilla is planning to include FileSaver to Gecko 9: https://bugzilla.mozilla.org/show_bug.cgi?id=557540



来源:https://stackoverflow.com/questions/3067774/how-to-create-a-file-using-javascript-in-mozilla-firefox

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!