JS导出文件为txt并下载

本文介绍了一种不依赖于ActiveXObject对象,在多种浏览器环境下实现将textarea中的文本数据下载并保存为本地TXT文件的方法。通过使用Blob对象和URL.createObjectURL方法,结合鼠标点击事件模拟,实现了跨浏览器兼容的数据导出功能。

今天要做一个数据下载到本地保存为txt文件,一开始网上找了很多例子,大部分都是用的ActiveXObject对象,但是粘贴到本地测试就报错,后来才发现这个只兼容IE。后来又搜索了半天才得到解决,现在我就把解决办法给大家分享一下。

首先HTML结构使用最简单的结构:

   <textarea name="" id="text" cols="30" rows="10">这里输入的数据将保存为txt中</textarea>

   <button id="save" type="button">保存</button>

然后JS:

       document.querySelector('#save').addEventListener('click', saveFile);

       function fakeClick(obj) { 
         var ev = document.createEvent("MouseEvents");
ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    obj.dispatchEvent(ev);
  }

  function exportRaw(name, data) {
    var urlObject = window.URL || window.webkitURL || window;
    var export_blob = new Blob([data]);
    var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
    save_link.href = urlObject.createObjectURL(export_blob);
    save_link.download = name;
    fakeClick(save_link);
  }

  function saveFile(){
    var inValue  = document.querySelector('#text').value;
    exportRaw('test.txt', inValue);
  }

 

  这样就可以在点击保存后将textarea中输入的内容本地化为txt文件。

### 如何使用 JavaScript 将数组导出TXT 文件下载到本地 在浏览器环境中,可以使用 JavaScript 创建一个 TXT 文件将数组内容写入其中,然后触发下载操作。以下是实现此功能的详细方法: 1. **创建文件内容**:将数组转换为字符串格式,通常使用 `Array.prototype.join` 方法来完成。 2. **生成 Blob 对象**:通过 `Blob` 构造函数创建一个包含文件内容的对象。 3. **创建下载链接**:使用 `<a>` 标签和 `URL.createObjectURL` 方法生成一个可下载的链接。 4. **触发下载**:通过 JavaScript 模拟点击事件,使用户能够下载文件。 以下是完整的代码示例: ```javascript function exportArrayToTXT(array, filename = "data.txt") { // 将数组转换为字符串 const content = array.join("\n"); // 使用换行符分隔数组元素 // 创建 Blob 对象 const blob = new Blob([content], { type: "text/plain;charset=utf-8" }); // 创建下载链接 const link = document.createElement("a"); link.href = URL.createObjectURL(blob); link.download = filename; // 触发下载 document.body.appendChild(link); // 需要将链接添加到 DOM 中才能生效 link.click(); // 清理资源 document.body.removeChild(link); URL.revokeObjectURL(link.href); } // 示例用法 const myArray = ["Hello", "World", "This is a test"]; exportArrayToTXT(myArray, "example.txt"); ``` 上述代码中,`Blob` 对象用于存储文件内容[^1],而 `URL.createObjectURL` 方法生成一个临时 URL,允许用户下载文件下载完成后,通过 `URL.revokeObjectURL` 方法释放资源以避免内存泄漏。 ### 注意事项 - 文件名可以通过函数参数自定义,默认为 `"data.txt"`。 - 数组元素之间使用换行符 `\n` 分隔,可以根据需求更改分隔符。 - 此方法适用于现代浏览器,不支持过时的浏览器环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值