如何在 JavaScript 中创建和保存文本文件?


在本教程中,我们将学习如何在 JavaScript 中创建和保存文本文件。有时,开发人员需要获取用户的文本或内容,并允许用户将内容存储在文本文件中,并允许文件下载到本地计算机。

许多 JavaScript 库可用于实现我们的目标,但我们在这个教程中使用了两个最好的库来创建和保存文本文件。

使用自定义文本创建文本文件并将其保存到本地计算机

我们将使用普通的 JavaScript 操作在用户的计算机上创建和保存文本文件。用户可以使用 HTML <a> 标签 从自定义内容创建文本文件并保存它。

开发人员应遵循以下语法从文本输入创建文本文件并保存它。

语法

// Create element with <a> tag
const link = document.createElement("a");

// Create a blog object with the file content which you want to add to the file
const file = new Blob([content], { type: 'text/plain' });

// Add file content in the object URL
link.href = URL.createObjectURL(file);

// Add file name
link.download = "sample.txt";

// Add click event to <a> tag to save file.
link.click();
URL.revokeObjectURL(link.href);

在上述语法中,我们从用户那里获取了内容,将其转换为 Blob 对象,然后将其保存到文本文件中。

算法

用户应遵循以下步骤以了解上述语法。

  • 步骤 1 − 创建 HTML <a> 元素。

  • 步骤 2 − 获取要添加到文本文件的内容。

  • 步骤 3 − 创建内容的 Blob 对象。

  • 步骤 4 − 在 <a> 标签的 href 属性中,添加 Blob 对象 URL。

  • 步骤 5 − 将默认文件名作为 <a> 标签的“download”属性的值。

  • 步骤 6 − 在 <a> 标签上调用 click() 事件以将文件保存到本地计算机。

示例

我们在下面的示例中按照语法和算法编写了代码。我们创建了 HTML <textfield>。用户可以输入他们想要添加到文件中的内容,然后单击“保存文件”按钮以将文本文件保存到计算机上。

当用户单击“保存文件”按钮时,它将调用“downloadFile()”函数,我们在其中添加了创建和保存文本文件的代码。

<html> <body> <h2> Create a text file and save it to a local computer using JavaScript. </h2> <p> Enter the file content:- </p> <textarea> </textarea> <br/> <button onclick = "downloadFile()"> save File </button> <script> const downloadFile = () => { const link = document.createElement("a"); const content = document.querySelector("textarea").value; const file = new Blob([content], { type: 'text/plain' }); link.href = URL.createObjectURL(file); link.download = "sample.txt"; link.click(); URL.revokeObjectURL(link.href); }; </script> </body> </html>

使用 FileSaver JavaScript 库创建和保存文本文件

FileSaver”是我们可以在原生 JavaScript 中用来创建文本文件的 JavaScript 库。用户可以使用库的 CDN 与 HTML 和 JavaScript 一起使用它。

用户应使用以下语法使用 FileSaver 库。

语法

// Create blob object with file content
var blob = new Blob(["This is a sample file content."], {
   type: "text/plain;charset=utf-8",
});

// Create and save the file using the FileWriter library
saveAs(Content, fileName);

在上述语法中,我们使用了一些文本创建了“text”类型的 Blob 对象。此外,我们使用了 FileWriter 库的“saveAs()”函数来创建和保存文本文件。

参数

“saveAs”函数接受两个参数。

  • 内容 − 需要存储在文件中的内容。

  • 文件名 − 用户下载时的默认文件名。

示例

我们在下面代码的 <head> 部分添加了“FileWriter”库的 CDN。当用户单击“创建文本文件”按钮时,它将在 JavaScript 中调用“CreateTextFile()”函数,该函数创建句子“这是一个简单的文件内容”的 Blob 对象并执行“saveAs()”函数以保存文本文件。

<html> <head> <script src = "https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.0/FileSaver.min.js" integrity="sha512-csNcFYJniKjJxRWRV1R7fvnXrycHP6qDR21mgz1ZP55xY5d+aHLfo9/FcGDQLfn2IfngbAHd8LdfsagcCqgTcQ==" crossorigin = "anonymous" referrerpolicy = "no-referrer"> </script> </head> <body> <h2>Create text file and save it to local computer using <i> FileSaver </i> JavaScript Library.</h2> <button type = "button" onclick = "CreateTextFile();">Create Text File</button> <script> function CreateTextFile() { var blob = new Blob(["This is a sample file content."], { type: "text/plain;charset=utf-8", }); saveAs(blob, "download.txt"); } </script> </body> </html>

使用 FileSaver JavaScript 库将图像内容保存到文本文件中

在本节中,我们使用了相同的库“FileSaver”,但不是将普通文本存储到文件中,而是将图像转换为 Blob 对象后将其转换为字符串。

用户可以按照以下语法将图像存储为文本文件格式并保存。

语法

// Access the file input by Id
var element = document.getElementById("uploadedImage");

// Add onchange event to file input
element.onchange = function (event) {

   // Convert image content to text
   var blob = new Blob[event.target.files[0]], {
      type: "text/plain;charset=utf-8",
   });

   // Create text file using image’s content and save it
   saveAs(blob, "download.txt");
};

在上述语法中,我们获取用户上传到 HTML <input> 中的文件,并将其内容转换为 Blob 对象。之后,我们使用 Blob 对象创建文本文件并将文件保存到本地计算机。

示例

我们在下面的示例中使用了“FileSaver”JavaScript 库,如上述语法所示。我们创建了文件输入字段,只允许用户上传图像文件。

在 JavaScript 中,我们在文件输入中添加了事件侦听器,当用户上传文件时,它将使用上传的图像文件创建文本文件并将其保存到用户的计算机。

<html> <head> <script src = "https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.0/FileSaver.min.js" integrity = "sha512-csNcFYJniKjJxRWRV1R7fvnXrycHP6qDR21mgz1ZP55xY5d+aHLfo9/FcGDQLfn2IfngbAHd8LdfsagcCqgTcQ==" crossorigin = "anonymous" referrerpolicy = "no-referrer"> </script> </head> <body> <h2>Upload image and add its content to text file and save it to computerusing <i> FileSaver </i> JavaScript Library.</h2> <input type = "file" id = "uploadedImage" accept = "image/png, image/gif, image/jpeg"/> <script> var element = document.getElementById("uploadedImage"); element.onchange = function (event) { var blob = new Blob[event.target.files[0]], { type: "text/plain;charset=utf-8", }); saveAs(blob, "download.txt"); }; </script> </body> </html>

更新于: 2023年10月31日

103K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告