Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    307

    scrivere un file di testo con javascript

    salve, dovrei creare e scrivere un file di testo con javascript.
    ho trovato questo script ma non funziona.
    mi sapete spiegare il perchè oppure ne avete un altro funzionante?
    grazie

    codice:
    <
    codice:
    HTML>
                <HEAD>
                
                <SCRIPT language="JavaScript">
                
    function WriteFile() 
    {
       var fso= new ActiveXObject("Scripting.FileSystemObject"); 
        var fh = fso.CreateTextFile("c:\\Test.txt", true); 
       fh.WriteLine("Some text goes here..."); 
       fh.Close(); 
    }
    
    </SCRIPT>
    </HEAD>
    
    <BODY>
    <P>
    <SCRIPT language="JavaScript"> WriteFile(); </SCRIPT>
    </P>
    </BODY>
    </HTML>
    
    

  2. #2
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    Torino
    Messaggi
    162
    ActiveXObject funziona solo su IE, non su altri browser.
    Il problema di fondo è che di base JavaScript non permette di creare e scrivere file (altrimenti pensa a cosa potrebbe succedere usando solo la console del browser). Io ti consiglio trovare una soluzione server side, ad esempio in PHP.
    Work hard. Code harder.

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,682
    Ciao, quoto stoneweb, per motivi di sicurezza nessuno dei moderni browser supporta i controlli ActiveX. Come ti è stato suggerito, potresti usare una soluzione server side.

    Un'altra soluzione alternativa (lato client, con JavaScript) è l'uso di un oggetto Blob col quale è possibile creare al volo il documento di testo in modo che si possa scaricare dal browser stesso, proprio come un normale download di un qualsiasi file. E' chiaro che in questo caso il file non sarà salvato automaticamente sul client, ma è l'utente che dovrà acconsentire il download e salvare quindi il file dove meglio gli pare.

    Vedi qualche guida, ad esempio questa: https://www.html.it/pag/52043/i-blob/
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    307
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao, quoto stoneweb, per motivi di sicurezza nessuno dei moderni browser supporta i controlli ActiveX. Come ti è stato suggerito, potresti usare una soluzione server side.

    Un'altra soluzione alternativa (lato client, con JavaScript) è l'uso di un oggetto Blob col quale è possibile creare al volo il documento di testo in modo che si possa scaricare dal browser stesso, proprio come un normale download di un qualsiasi file. E' chiaro che in questo caso il file non sarà salvato automaticamente sul client, ma è l'utente che dovrà acconsentire il download e salvare quindi il file dove meglio gli pare.

    Vedi qualche guida, ad esempio questa: https://www.html.it/pag/52043/i-blob/

    purtroppo non posso usare PHP per alcune ragioni che non sto qui ad elencare...
    Blob funziona con qualsiasi browser? anche quello mobile?
    mi suggerite una guida più dettagliata?
    io dovrei semplicemente creare un nuovo file di testo e scrivere una singola riga di testo
    grazie

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,682
    Blob funziona con qualsiasi browser?
    Penso di sì; puoi verificare tu stesso su caniuse.com

    mi suggerite una guida più dettagliata?
    Personalmente non ne conosco nessuna in particolare ma basterebbe qualche ricerca per trovare degli snippet da riutilizzare.

    io dovrei semplicemente creare un nuovo file di testo e scrivere una singola riga di testo
    grazie
    Qui un semplice esempio dove attraverso qualche campo di testo è possibile inserire il nome del file e il contenuto da salvare.
    Cliccando sul pulsante "Salva" verrà eseguito il download del file creato al volo:
    codice:
    <!DOCTYPE HTML>
    <html lang="it">
       <head>
          <title>Esempio</title>
          <meta charset="utf-8">
       </head>
       <body>
          <label>Nome File: <input id="inp-nome-file"></label>
          <hr>
          <label>Testo: <br><textarea id="txt-contenuto"></textarea></label>
          <hr>
          <input id="btn-salva" type="button" value="Salva">
          <script>
             
             function salvaFileTesto(nomeFile, contenuto) {
                var file = new Blob(['\ufeff' + contenuto], { type: 'text/plain;charset=utf-8' });
                if (window.navigator.msSaveOrOpenBlob) // IE10+
                   window.navigator.msSaveOrOpenBlob(file, filename);
                else {
                   var a = document.createElement('a'),
                   url = URL.createObjectURL(file);
                   a.href = url;
                   a.download = nomeFile;
                   document.body.appendChild(a);
                   a.click();
                   setTimeout(function() {
                      document.body.removeChild(a);
                      window.URL.revokeObjectURL(url);  
                   }, 0); 
                }
             }
             
             document.getElementById('btn-salva').onclick = function(){
                salvaFileTesto(
                    document.getElementById('inp-nome-file').value
                   ,document.getElementById('txt-contenuto').value
                )
             }
             
          </script>
       </body>
    </html>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    307
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Penso di sì; puoi verificare tu stesso su caniuse.com


    Personalmente non ne conosco nessuna in particolare ma basterebbe qualche ricerca per trovare degli snippet da riutilizzare.



    Qui un semplice esempio dove attraverso qualche campo di testo è possibile inserire il nome del file e il contenuto da salvare.
    Cliccando sul pulsante "Salva" verrà eseguito il download del file creato al volo:
    codice:
    <!DOCTYPE HTML>
    <html lang="it">
       <head>
          <title>Esempio</title>
          <meta charset="utf-8">
       </head>
       <body>
          <label>Nome File: <input id="inp-nome-file"></label>
          <hr>
          <label>Testo: <br><textarea id="txt-contenuto"></textarea></label>
          <hr>
          <input id="btn-salva" type="button" value="Salva">
          <script>
             
             function salvaFileTesto(nomeFile, contenuto) {
                var file = new Blob(['\ufeff' + contenuto], { type: 'text/plain;charset=utf-8' });
                if (window.navigator.msSaveOrOpenBlob) // IE10+
                   window.navigator.msSaveOrOpenBlob(file, filename);
                else {
                   var a = document.createElement('a'),
                   url = URL.createObjectURL(file);
                   a.href = url;
                   a.download = nomeFile;
                   document.body.appendChild(a);
                   a.click();
                   setTimeout(function() {
                      document.body.removeChild(a);
                      window.URL.revokeObjectURL(url);  
                   }, 0); 
                }
             }
             
             document.getElementById('btn-salva').onclick = function(){
                salvaFileTesto(
                    document.getElementById('inp-nome-file').value
                   ,document.getElementById('txt-contenuto').value
                )
             }
             
          </script>
       </body>
    </html>
    grazie!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    307
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Penso di sì; puoi verificare tu stesso su caniuse.com


    Personalmente non ne conosco nessuna in particolare ma basterebbe qualche ricerca per trovare degli snippet da riutilizzare.



    Qui un semplice esempio dove attraverso qualche campo di testo è possibile inserire il nome del file e il contenuto da salvare.
    Cliccando sul pulsante "Salva" verrà eseguito il download del file creato al volo:
    codice:
    <!DOCTYPE HTML>
    <html lang="it">
       <head>
          <title>Esempio</title>
          <meta charset="utf-8">
       </head>
       <body>
          <label>Nome File: <input id="inp-nome-file"></label>
          <hr>
          <label>Testo: <br><textarea id="txt-contenuto"></textarea></label>
          <hr>
          <input id="btn-salva" type="button" value="Salva">
          <script>
             
             function salvaFileTesto(nomeFile, contenuto) {
                var file = new Blob(['\ufeff' + contenuto], { type: 'text/plain;charset=utf-8' });
                if (window.navigator.msSaveOrOpenBlob) // IE10+
                   window.navigator.msSaveOrOpenBlob(file, filename);
                else {
                   var a = document.createElement('a'),
                   url = URL.createObjectURL(file);
                   a.href = url;
                   a.download = nomeFile;
                   document.body.appendChild(a);
                   a.click();
                   setTimeout(function() {
                      document.body.removeChild(a);
                      window.URL.revokeObjectURL(url);  
                   }, 0); 
                }
             }
             
             document.getElementById('btn-salva').onclick = function(){
                salvaFileTesto(
                    document.getElementById('inp-nome-file').value
                   ,document.getElementById('txt-contenuto').value
                )
             }
             
          </script>
       </body>
    </html>
    Perdonami, ho bisogno ancora del tuo aiuto.
    Guardano anche altre guide, ho creato uno script semplicissimo (che poi è quello che mi servirebbe):

    codice:
    <script type="text/javascript">
      <!--
      var testo = new Blob(["testo di prova"]);  
      window.navigator.msSaveBlob(testo, 'prova.txt');
      -->
      </script>
    Ma non mi genera il file di testo.
    Sbaglio in qualcosa?
    Grazie

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,682
    Perdonami, ho bisogno ancora del tuo aiuto.
    Guardano anche altre guide, ho creato uno script semplicissimo (che poi è quello che mi servirebbe):
    [...]
    Ma non mi genera il file di testo.
    Sbaglio in qualcosa?
    Si tratta solo di un problema di supporto. Il sito developer.mozilla.org, riguardo il metodo msSaveBlob, avverte che è non-standard ed obsoleto.
    Attualmente non è supportato ne da FireFox ne da Chrome.

    Funziona su Edge e IE (il prefisso "ms" indica presumibilmente che è una tecnologia proprietaria dell'omonima casa).

    Se noti, nel mio esempio è incluso il supporto per IE10+ in cui è appunto supportato tale metodo (che grossomodo è ciò che hai trovato tu).
    In questo caso ti manca di aggiungere un fallback per il supporto su tutti gli altri browser (vedi il mio esempio).
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    307
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Si tratta solo di un problema di supporto. Il sito developer.mozilla.org, riguardo il metodo msSaveBlob, avverte che è non-standard ed obsoleto.
    Attualmente non è supportato ne da FireFox ne da Chrome.

    Funziona su Edge e IE (il prefisso "ms" indica presumibilmente che è una tecnologia proprietaria dell'omonima casa).

    Se noti, nel mio esempio è incluso il supporto per IE10+ in cui è appunto supportato tale metodo (che grossomodo è ciò che hai trovato tu).
    In questo caso ti manca di aggiungere un fallback per il supporto su tutti gli altri browser (vedi il mio esempio).
    mi sei stato di grandissimo aiuto grazie.
    un'ultima domanda...
    con la "fallback per il supporto su tutti gli altri browser" questo script funzionerà sempre? anche con le future nuove versioni del browser?

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,682
    con la "fallback per il supporto su tutti gli altri browser" questo script funzionerà sempre? anche con le future nuove versioni del browser?
    Impossibile da dire con certezza... ci vorrebbe la sfera di cristallo
    Ad ogni modo il supporto per l'oggetto Blob, e correlato oggetto URL, è previsto anche per prossime versioni di vari principali browser, puoi vedere su caniuse.com.

    Non so dirti se tale tecnologia sarà in futuro soppiantata da qualche altra e se continuerà ad essere supportata; personalmente non ho trovato informazioni su possibili cambi di rotta; ciò che posso dirti è che attualmente funziona così e non vedo molte altre soluzioni; fintanto che funziona, la si può adoperare; se poi non sarà più supportata in futuro, si prenderanno gli eventuali opportuni provvedimenti per aggiornare i propri elaborati e stare al passo con le tecnologie disponibili e supportate, così come si è sempre fatto.

    Io non so dirti di più
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.