2010-06-18 15 views
8

Quiero escribir una función en javascript que crea un archivo y escribir algo de contenido, iam trabajando con firefox, ¿alguien me puede ayudar en este caso?Cómo crear un archivo usando javascript en Mozilla Firefox

Gracias ...

+1

Por qué la downvote? –

+0

Respondí la pregunta considerando que se refiere a crear un archivo en el lado del cliente, de la misma manera que lo hace TiddlyWiki. Algunas personas han descartado la pregunta, ya que interpretan que está preguntando si JavaScript puede crear archivos en el lado del servidor. Quizás deberías aclarar. – flpmor

Respuesta

2

escritura al sistema de archivos directamente desde un navegador está prohibido por razones de seguridad. Con html5, sin embargo, será posible tener soporte de almacenamiento sin conexión. Take a look here.

Grz, Kris.

3

Javascript desde los sitios web no puede acceder al sistema de archivos local.

Si desea almacenar datos, almacénelos en el servidor o en una cookie.

+1

O en el cliente en Web Storage https://developer.mozilla.org/en/dom/storage –

0

Si bien todos los que respondieron que javascript no tiene la capacidad de escribir archivos en un servidor remoto son correctos, y esto es cierto por razones de seguridad, lo que desea lograr aún puede ser posible.

Por ejemplo, si desea hacer posible crear un archivo en su sitio web con el uso de javascript, puede hacerlo con un lenguaje de scripting del lado del servidor y una llamada AJAX.

Ejemplo:

Tiene un archivo en el servidor de llamada update_last_access.php que creará un archivo que almacena la última vez que se accede al archivo en algún archivo arbitrario.

Si a continuación tuvo su función de JavaScript crea un AJAX llamar a esa secuencia de comandos, por ejemplo, en jQuery

$.get("update_last_access.php") 

entonces esto sería ejecutar el script del lado del servidor y escribir en el fichero.

Antes de que se le pueda brindar más ayuda, tendrá que aclarar lo que está tratando de hacer.

0

Puede leer archivos del sistema de archivos en JavaScript con Firefox 3.6 - vea mi EPUB reader proof of concept, por ejemplo.

Sin embargo, no puede escribir archivos directamente desde JavaScript. Tienes que ir a través de un servidor.

4

Puede escribir archivos en JavaScript en Firefox, pero tiene que usar un objeto XPCOM (API interna del navegador). Esto no está permitido para JavaScript cargado desde una página web, y está destinado a ser utilizado por JavaScript corriendo dentro de un complemento de Firefox (con alto nivel de privilegios).

Existe una forma de que JavaScript sin privilegios (página web) solicite más privilegios y, si el usuario lo otorga (aparecerá un diálogo emergente solicitando permiso), el código de la página web podría escribir en un archivo .

Pero antes de leer más, una advertencia:

Esto no es de JavaScript estándar y no recomendaría este método a menos que usted está desarrollando una aplicación muy específica, que será utilizado en una manera muy específica (como por ejemplo, http://www.tiddlywiki.com/ una wiki única de JavaScript-HTML del lado del cliente).

Solicitar privilegios de XPCOM en un sitio web es una mala práctica. Es básicamente equivalente a ejecutar un .exe que acaba de descargar de un sitio. Le está pidiendo a un usuario que otorgue acceso completo a su computadora (leer, escribir, ejecutar) con la identidad del usuario que ejecuta Firefox.

Solicita permiso para usar XPCOM (esto indicará al usuario para su confirmación, no hay manera de evitarlo):

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

Luego, escribe en un archivo utilizando un objeto XPCOM (código de ejemplo de 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 

puede encontrar más información acerca de E/S en Firefox mediante XPCOM aquí: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

Cuestiones relacionadas