Incapable de conserver les sauts de ligne lors de l'écriture de fichier texte comme blob
J'ai une zone de texte qui contient le texte que je veux à la sortie vers un fichier texte pour les utilisateurs à télécharger.
J'utilise cette fonction pour saisir lorsque les utilisateurs cliquent sur le bouton enregistrer
function saveTextAsFile()
{
var textToWrite = document.getElementById("inputText").value;
var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
alert(textFileAsBlob);
var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value;
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
if (window.webkitURL != null)
{
//Chrome allows the link to be clicked
//without actually adding it to the DOM.
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
}
else
{
//Firefox requires the link to be added to the DOM
//before it can be clicked.
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
}
downloadLink.click();
}
Mais les sauts de ligne ne sont pas retenus. Ils existent dans le document.getElementById("inputText").valeur; mais pas dans le fichier texte créé à partir de la goutte.
Vous pouvez trouver la réponse à cette à partir de l'une des réponses au post suivant (cocher la réponse à propos de CODE 13): stackoverflow.com/questions/9980416/...
OriginalL'auteur Matt | 2013-10-04
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur le même problème. Cela semble fonctionner pour moi:
.replace(/([^\r])\n/g, "$1\r\n");
. De cette manière, il évite de correspondance\r\n
, ce qui constituerait\r\r\n
.à moins que votre texte a plusieurs retours à la ligne dans une ligne, alors vous voulez que cela se produise
vous voulez ce que cela arrive? L'original du code de réponse? Ou Ismael du changement proposé? Mettre une autre manière - que faire si mon texte a une seule retours à la ligne dans certains endroits, et plusieurs retours à la ligne dans d'autres - qu'est-ce que le bon code pour cela? La réponse fournie semble fonctionner pour ce scénario.
OriginalL'auteur nihlton
changement
à
Peut ne pas fonctionner sous IE, et je ne sais pas comment le résoudre
OriginalL'auteur Vinu
Vous devez mettre quelque chose comme ça dans votre code.
Aussi, je ne sais pas si <br /> pour ma part, puisque le but final est d'avoir un fichier texte avec des sauts de ligne. Pas un fichier html.
Le blob est prévu pour être
text/plain
, pas en html.OriginalL'auteur Lambros