8
votes

Comment écrire des données localesSorage dans un fichier texte en chrome

Je souhaite écrire un article localStorage dans un fichier texte et souhaitez appeler l'utilisateur à stocker le fichier dans un emplacement spécifié. Aidez-moi s'il vous plaît avec l'extension du code

  var data = JSON.parse(localStorage.getItem(pid));   
  var Text2Write = "";
  for(var pr in ele)
  {
     var dat = pr + ":" + ele[pr] + "\n";
     Text2Write += dat;
  }
  // Here I want to store this Text2Write to text file and ask user to save where he wants.  


5 Réponses :


-1
votes

Vous devez écrire ce contenu dans un fichier texte pouvant être téléchargé avec PHP. Avec JavaScript, ce n'est pas possible, je pense. Vous pouvez envoyer une post-demande à un fichier PHP pouvant être téléchargé sous forme de fichier texte.


0 commentaires

4
votes

Si vous ne voulez pas utiliser une solution côté serveur (ne doit pas nécessairement être PHP bien sûr), le moyen le plus simple est d'utiliser une URI de données:

data:text/plain,Your text here


2 commentaires

window.location = "Données: texte / plaine, votre texte ici";


@Emilstenstorm comme ça? $ ('# mais'). Cliquez sur (fonction () {window.location = "Données: texte / plaine, mes données"});




2
votes

Étant donné que la question est étiquetée avec Google-Chrome-Extension, je souhaite fournir une solution plus simple pour les développeurs de vulgarisation.

Premier, ajoutez "Téléchargements" aux autorisations dans Manifest.json Code> P > xxx pré>

puis utilisez les téléchargements-API avec les données : Texte / Code Code> Trick tel que fourni par @ emil-stenström. P>

var myString = localStorage.YOUR_VALUE;
chrome.downloads.download({
    url: "data:text/plain," + myString,
    filename: "data.txt",
    conflictAction: "uniquify", // or "overwrite" / "prompt"
    saveAs: false, // true gives save-as dialogue
}, function(downloadId) {
    console.log("Downloaded item with ID", downloadId);
});


0 commentaires

0
votes

J'ai également voulu enregistrer mon texte de stockage local dans un fichier de téléchargement et le code fonctionne sur le bureau pour Safari, Chrome et Firefox sur Mac. Cependant, je pense qu'il est impossible dans IOS d'enregistrer le blob () n'importe où avec chrome ou Firefox. Cela fonctionne, assez intéressant de Safari. Par exemple, je peux enregistrer le fichier texte à mon application Wunderlist. Voici le lien mon repo sur github: The Cat Whisperer sur github gh-pages

Voici le code JavaScript: P>

const fileDownloadButton = document.getElementById('save');
function localStorageToFile() {
    const csv = JSON.stringify(localStorage['autosave']);
    const csvAsBlob = new Blob([csv], {type: 'text/plain'});
    const fileNameToSaveAs = 'local-storage.txt';
    const downloadLink = document.getElementById('save');
    downloadLink.download = fileNameToSaveAs;
    if (window.URL !== null) {
        // Chrome allows the link to be clicked without actually adding it to the DOM
        downloadLink.href = window.URL.createObjectURL(csvAsBlob);
        downloadLink.target = `_blank`;
    } else {
        downloadLink.href = window.URL.createObjectURL(csvAsBlob);
        downloadLink.target = `_blank`;
        downloadLink.style.display = 'none';
        // add .download so works in Firefox desktop.
        document.body.appendChild(downloadLink.download);
    }
    downloadLink.click();
}
// file download button event listener
fileDownloadButton.addEventListener('click', localStorageToFile);      


0 commentaires