2010-06-18 7 views
8

Ich möchte eine Funktion in Javascript schreiben, die eine Datei erstellt und etwas Inhalt zu schreiben, iam mit Firefox arbeiten, kann mir jemand in diesem Fall helfen.So erstellen Sie eine Datei mit Javascript in Mozilla Firefox

Danke ...

+1

Warum die downvote? –

+0

Ich beantwortete die Frage, wenn man bedenkt, dass es sich auf das Erstellen einer Datei auf der Client-Seite bezieht, genauso wie TiddlyWiki. Einige Leute haben die Frage bei der Interpretation abgelehnt. Sie fragen, ob JavaScript Dateien auf der Serverseite erstellen kann. Vielleicht solltest du das klären. – flpmor

Antwort

2

auf das Dateisystem zu schreiben direkt von einem Browser aus Sicherheitsgründen verboten. Mit html5 wird es möglich sein, Offline-Speicher-Unterstützung zu haben. Take a look here.

Grz, Kris.

3

Javascript von Websites kann nicht auf das lokale Dateisystem zugreifen.

Wenn Sie Daten speichern möchten, speichern Sie sie entweder auf dem Server oder in einem Cookie.

+1

Oder auf dem Client in Web Storage https://developer.mozilla.org/de/dom/storage –

0

Während alle, die geantwortet haben, dass Javascript nicht die Fähigkeit hat, Dateien auf einem Remote-Server zu schreiben, korrekt sind, und dies aus Sicherheitsgründen gilt, was Sie erreichen möchten, ist möglicherweise noch möglich.

Wenn Sie beispielsweise eine Datei auf Ihrer Website mithilfe von JavaScript erstellen möchten, können Sie dies mit einer serverseitigen Skriptsprache und einem AJAX-Aufruf tun.

Beispiel:

Sie haben eine Datei auf Ihrem Server update_last_access.php genannt, die eine Datei erstellen wird, die das letzte Mal speichert die Datei in einer beliebigen Datei zugegriffen wurde.

Wenn Sie hat dann Javascript-Funktion, eine Ajax-Aufruf, um das Skript zu machen, zum Beispiel in jquery

$.get("update_last_access.php") 

Dann würde dies die Server-Seite Skript ausführen und in die Datei schreiben.

Bevor weitere Hilfe für Sie bereitgestellt werden kann, müssen Sie klären, was Sie zu tun versuchen.

0

Sie können Dateien aus dem Dateisystem in JavaScript mit Firefox 3.6 lesen - siehe zum Beispiel meine EPUB reader proof of concept.

Sie können Dateien jedoch nicht direkt aus JavaScript schreiben. Sie müssen über einen Server gehen.

4

Sie können Dateien in JavaScript in Firefox schreiben, aber Sie müssen ein XPCOM-Objekt verwenden (interne Browser-API). Dies ist nicht zulässig für JavaScript, das von einer Webseite geladen wird, und es wird von JavaScript verwendet, das in einem Firefox-Add-On ausgeführt wird (mit vielen Privilegien).

Es gibt eine Möglichkeit für nicht privilegiertes (Webseiten-) JavaScript, mehr Privilegien anzufordern, und wenn der Benutzer es gewährt (es wird ein Popup-Dialog nach Erlaubnis fragen), könnte der Webseitencode in eine Datei schreiben .

Aber bevor Sie weiter lesen, eine Warnung:

Dies ist JavaScript nicht Standard und ich würde diesen Ansatz nicht empfehlen, es sei denn, Sie eine sehr spezifische Anwendung entwickeln, das in einer ganz bestimmten Art und Weise verwendet werden (wie für Beispiel, http://www.tiddlywiki.com/ ein clientseitiges JavaScript-HTML-only-Wiki).

Das Anfordern von XPCOM-Privilegien auf einer Website ist eine schlechte Übung! Dies entspricht im Wesentlichen dem Ausführen einer .exe, die Sie gerade von einer Site heruntergeladen haben. Sie bitten einen Benutzer, vollen Zugriff auf seinen Computer zu gewähren (Lesen, Schreiben, Ausführen) mit der Identität des Benutzers, der Firefox ausführt.

anfordern Erlaubnis XPCOM zu verwenden (dies wird den Benutzer zur Bestätigung aufgefordert, keine Möglichkeit, es zu vermeiden):

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

Dann schreibt in eine Datei ein XPCOM-Objekt (Beispiel-Code von 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 

Sie weitere Informationen über I/O in Firefox XPCOM finden Sie hier: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

Verwandte Themen