Je souhaite écrire des données dans un fichier existant à l'aide de JavaScript. Je ne veux pas l'imprimer sur la console. Je veux réellement écrire des données dans abc.txt
. J'ai lu de nombreuses questions répondues, mais partout où elles sont imprimées sur console. à un endroit, ils ont donné du code mais ça ne fonctionne pas. Alors, s'il vous plaît, quelqu'un peut-il m'aider Comment écrire des données dans un fichier.
J'ai fait référence au code mais ça ne fonctionne pas: ça donne une erreur:
Uncaught TypeError: constructeur illégal
sur chrome et
SecurityError: l'opération n'est pas sécurisée.
sur Mozilla
var f = "sometextfile.txt";
writeTextFile(f, "Spoon")
writeTextFile(f, "Cheese monkey")
writeTextFile(f, "Onion")
function writeTextFile(afilename, output)
{
var txtFile =new File(afilename);
txtFile.writeln(output);
txtFile.close();
}
Alors pouvons-nous réellement écrire des données dans un fichier en utilisant uniquement Javascript ou PAS?
javascript
html
pareshm
la source
la source
Réponses:
Quelques suggestions pour cela -
la source
Vous pouvez créer des fichiers dans le navigateur en utilisant
Blob
etURL.createObjectURL
. Tous les navigateurs récents le prennent en charge .Vous ne pouvez pas enregistrer directement le fichier que vous créez, car cela poserait d'énormes problèmes de sécurité, mais vous pouvez le fournir en tant que lien de téléchargement pour l'utilisateur. Vous pouvez proposer un nom de fichier via l'
download
attribut du lien, dans les navigateurs prenant en charge l'attribut de téléchargement. Comme pour tout autre téléchargement, l'utilisateur qui télécharge le fichier aura le dernier mot sur le nom du fichier.Voici un exemple qui utilise cette technique pour enregistrer du texte arbitraire à partir d'un fichier
textarea
.Si vous souhaitez lancer immédiatement le téléchargement au lieu de demander à l'utilisateur de cliquer sur un lien, vous pouvez utiliser des événements de souris pour simuler un clic de souris sur le lien comme l'a fait la réponse de Lifecube . J'ai créé un exemple mis à jour qui utilise cette technique.
la source
URL
). La définition du nom de fichier ne fonctionnera pas dans Safari car il n'a toujours pas implémenté l'download
attribut .\n
pour représenter les nouvelles lignes comme le font les programmes UNIX. Vous l'affichez probablement dans un programme Windows, tel que le Bloc-notes, qui ne rend pas le\n
caractère comme une nouvelle ligne . Si vous voulez que les nouvelles lignes à rendre correctement dans le Bloc - notes et d'autres programmes Windows, avant de mettre le texte dans leBlob
remplacer chaque\n
avec\r\n
:text = text.replace(/\n/g, '\r\n')
.mouseover
le lien, mais en fonction de la quantité de traitement qu'il effectue, cela pourrait ne pas fonctionner très bien.Si vous parlez de javascript de navigateur, vous ne pouvez pas écrire de données directement dans un fichier local pour des raisons de sécurité. La nouvelle API HTML 5 peut uniquement vous permettre de lire des fichiers.
Mais si vous souhaitez écrire des données et permettre à l'utilisateur de télécharger en tant que fichier local. le code suivant fonctionne:
pour l'utiliser:
download('the content of the file', 'filename.txt', 'text/plain');
la source
La réponse ci-dessus est utile, mais j'ai trouvé un code qui vous aide à télécharger un fichier texte directement en cliquant sur le bouton. Dans ce code, vous pouvez également changer
filename
comme vous le souhaitez. C'est une fonction javascript pure avec HTML5. Travaille pour moi!la source
createObjectURL
. Contrairement à la plupart des choses dans JS, les objets que vous créez avec lui ne sont pas automatiquement récupérés lorsqu'il n'y a plus de références à eux; ils ne sont récupérés que lorsque la page se ferme. Puisque vous n'utilisez pasURL.revokeObjectURL()
dans ce code pour libérer la mémoire utilisée par le dernier appel, vous avez une fuite de mémoire; si l'utilisateur appellesaveTextFile
plusieurs fois, il continuera à consommer de plus en plus de mémoire car vous ne l'avez jamais libérée.Essayer
la source
Dans le cas où il n'est pas possible d'utiliser la nouvelle
Blob
solution, qui est certainement la meilleure solution dans un navigateur moderne, il est toujours possible d'utiliser cette approche plus simple, qui a une limite dans la taille du fichier en passant:la source
Utilisez le code de l'utilisateur @ useless-code ci-dessus ( https://stackoverflow.com/a/21016088/327386 ) pour générer le fichier. Si vous souhaitez télécharger le fichier automatiquement, passez le
textFile
qui vient d'être généré à cette fonction:la source
J'ai trouvé de bonnes réponses ici, mais j'ai également trouvé un moyen plus simple.
Le bouton pour créer l'objet blob et le lien de téléchargement peuvent être combinés en un seul lien, car l'élément link peut avoir un attribut onclick. (L'inverse ne semble pas possible, l'ajout d'un href à un bouton ne fonctionne pas.)
Vous pouvez
bootstrap
styliser le lien comme un bouton en utilisant , qui est toujours du javascript pur, sauf pour le style.La combinaison du bouton et du lien de téléchargement réduit également le code, car moins de ces
getElementById
appels laids sont nécessaires.Cet exemple ne nécessite qu'un seul clic pour créer le blob de texte et le télécharger:
la source
Oui c'est possible Ici le code est
la source