2010-06-18 14 views
8

Voglio scrivere una funzione in javascript che crea un file e scriverne del contenuto, iam lavorando con firefox, qualcuno può aiutarmi in questo caso.Come creare un file usando javascript in Mozilla Firefox

Grazie ...

+1

Perché il downvote? –

+0

Ho risposto alla domanda considerando che si riferisce alla creazione di un file sul lato client, allo stesso modo di TiddlyWiki. Alcune persone hanno respinto la domanda mentre interpretano che stai chiedendo se JavaScript può creare file sul lato server. Forse dovresti chiarire. – flpmor

risposta

2

scrittura al file system direttamente da un browser è vietato per motivi di sicurezza. Con html5 tuttavia sarà possibile avere il supporto per lo storage offline. Take a look here.

Grz, Kris.

3

Javascript dai siti Web non può accedere al file system locale.

Se si desidera memorizzare i dati, memorizzarli sul server o in un cookie.

+1

O sul client in Archiviazione Web https://developer.mozilla.org/en/dom/storage –

0

Mentre tutti quelli che hanno risposto che javascript non ha la capacità di scrivere file su un server remoto sono corretti, e questo è vero per motivi di sicurezza, ciò che si vuole realizzare può essere ancora possibile.

Ad esempio, se si desidera consentire la creazione di un file sul proprio sito Web con l'uso di javascript, è possibile farlo con un linguaggio di scripting lato server e una chiamata AJAX.

Esempio:

Si dispone di un file sul server chiamato update_last_access.php che creerà un file che memorizza l'ultima volta che il file è stato accessibile in qualche file arbitrario.

Se si ha la funzione javascript fare un AJAX chiamata fuori per quello script, per esempio, in jQuery

$.get("update_last_access.php") 

allora questo sarebbe eseguire lo script lato server e scrivere sul file.

Prima che possa essere fornito ulteriore aiuto per te, dovrai chiarire che cosa stai cercando di fare.

0

È possibile leggere file dal filesystem in JavaScript con Firefox 3.6 - vedere il mio EPUB reader proof of concept, ad esempio.

Tuttavia, non è possibile scrivere file direttamente da JavaScript. Devi andare tramite un server.

4

È possibile scrivere file in JavaScript in Firefox, ma è necessario utilizzare un oggetto XPCOM (API browser interno). Questo non è consentito per JavaScript caricato da una pagina Web, e deve essere utilizzato da JavaScript in esecuzione all'interno di un componente aggiuntivo di Firefox (con alto livello di privilegi).

C'è un modo per JavaScript (pagina web) non privilegiato per richiedere più privilegi e se l'utente lo concede (ci sarà una finestra di dialogo che chiede il permesso), il codice della pagina web sarebbe in grado di scrivere su un file .

Ma prima di leggere oltre, un avvertimento:

Questo non è standard Javascript e io non consiglierei questo approccio a meno che non si sta sviluppando un'applicazione molto specifica, che verrà utilizzata in un modo molto specifico (come ad esempio, http://www.tiddlywiki.com/ un wiki solo JavaScript-HTML sul lato client).

La richiesta di privilegi XPCOM su un sito Web è una cattiva pratica! È fondamentalmente equivalente all'esecuzione di un file .exe appena scaricato da un sito. Stai chiedendo a un utente di concedere l'accesso completo al proprio computer (leggere, scrivere, eseguire) con l'identità dell'utente che esegue Firefox.

richiedere il permesso di usare XPCOM (questo richiederà all'utente per la conferma, non c'è modo di evitarlo):

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

Poi, scrivere su un file usando un oggetto XPCOM (codice di esempio da 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 

potete trovare ulteriori informazioni su I/O in Firefox utilizzando XPCOM qui: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

Problemi correlati