2010-06-18 29 views
8

Je veux écrire une fonction en javascript qui crée un fichier et y écrire du contenu, iam travaillant avec firefox, quelqu'un peut-il m'aider dans ce cas.Comment créer un fichier en utilisant javascript dans Mozilla Firefox

Merci ...

+1

Pourquoi downvote? –

+0

J'ai répondu à la question en considérant qu'il s'agit de créer un fichier du côté client, de la même manière que TiddlyWiki. Certaines personnes ont rejeté la question en interprétant que vous demandez si JavaScript peut créer des fichiers côté serveur. Peut-être que vous devriez clarifier. – flpmor

Répondre

2

écriture au système de fichiers directement à partir d'un navigateur est interdite pour des raisons de sécurité. Avec html5 cependant, il sera possible d'avoir un support de stockage hors ligne. Take a look here.

Grz, Kris.

3

Javascript des sites Web ne peut pas accéder au système de fichiers local.

Si vous souhaitez stocker des données, stockez-les sur le serveur ou dans un cookie.

+1

Ou sur le client dans le stockage Web https://developer.mozilla.org/en/dom/storage –

0

Alors que tous ceux qui ont répondu que javascript n'a pas la possibilité d'écrire des fichiers sur un serveur distant sont corrects, et cela est vrai pour des raisons de sécurité, ce que vous voulez accomplir peut toujours être possible. Par exemple, si vous souhaitez créer un fichier sur votre site Web avec javascript, vous pouvez le faire avec un langage de script côté serveur et un appel AJAX.

Exemple:

Vous avez un fichier sur votre serveur appelé update_last_access.php qui va créer un fichier qui stocke la dernière fois que le fichier a été accessible dans quelques fichiers arbitraires.

Si vous avait alors votre fonction javascript faire un AJAX criez ce script, par exemple, dans jquery

$.get("update_last_access.php") 

Ensuite cela exécuter le script côté serveur et écrire dans le fichier.

Avant que toute aide ne puisse vous être apportée, vous devrez clarifier ce que vous essayez de faire.

0

Vous pouvez lire les fichiers du système de fichiers en JavaScript avec Firefox 3.6 - voir par exemple mon EPUB reader proof of concept.

Vous ne pouvez pas écrire des fichiers directement à partir de JavaScript, cependant. Vous devez passer par un serveur.

4

Vous pouvez écrire des fichiers en JavaScript dans Firefox, mais vous devez utiliser un objet XPCOM (API de navigateur interne). Ceci n'est pas autorisé pour JavaScript chargé à partir d'une page Web, et il est destiné à être utilisé par JavaScript en cours d'exécution dans un add-on Firefox (avec un niveau élevé de privilèges).

Il existe un moyen pour le JavaScript non privilégié (page Web) de demander plus de privilèges et si l'utilisateur l'accorde (une boîte de dialogue contextuelle demandant l'autorisation), le code de la page Web pourrait écrire dans un fichier .

Mais avant de lire plus loin, un avertissement:

Ce n'est pas JavaScript standard et je ne recommanderais pas cette approche à moins que vous développez une application très spécifique, qui sera utilisé d'une manière très spécifique (comme pour exemple, http://www.tiddlywiki.com/ un wiki JavaScript-HTML uniquement côté client).

Demander des privilèges XPCOM sur un site Web est une mauvaise pratique! C'est fondamentalement équivalent à exécuter un fichier .exe que vous venez de télécharger depuis un site. Vous demandez à un utilisateur d'accorder un accès complet à son ordinateur (lecture, écriture, exécution) avec l'identité de l'utilisateur exécutant Firefox.

Demander la permission d'utiliser XPCOM (cela demandera confirmation à l'utilisateur, aucun moyen de l'éviter):

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

Ensuite, écrire dans un fichier en utilisant un objet XPCOM (exemple de code 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 

Vous pouvez trouver plus d'informations sur les E/S dans Firefox en utilisant XPCOM ici: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O