如何将前端数据保存到文件

有时候,网页上需要提供将当前页面上的数据导出为本地文件的功能,例如将页面上的一个表格导出为csv文件。这个功能看似简单,实际上却没有什么直接的方法。由于导出文件的操作(比如浏览文件目录,创建本地文件等)已经超出了浏览器内JS解释器的职责范围,需要和操作系统交互了,所以如果没有浏览器提供接口支持,是没法导出文件的。
但是,有一个巧妙的办法,就是使用<a>元素(https://stackoverflow.com/questions/13405129/javascript-create-and-save-file )。 这个办法巧妙结合了两个小技巧:1. http链接可以以下载文件的方式打开 2. 通过URL.createObjectURL(object)可以为一个JS File/Blob对象创建一个 URL。

代码如下:

function download(text, name, type) {
  var a = document.getElementById("a");
  var file = new Blob([text], {type: type});
  a.href = URL.createObjectURL(file);
  a.download = name;
  a.dispatchEvent(new MouseEvent('click', {'bubbles': false, 'cancelable': true}));
}

<a href="" id="a">click here to download your file</a>
<button οnclick="download('file text', 'myfilename.txt', 'text/plain')">Create file</button>

 代码实现的功能包括:

  1. 页面上放一个隐藏的 <a>元素
  2. 当用户要导出文件时(比如点击了导出按钮),根据导出内容创建一个Blob对象并产生对应的url
  3. 将 a 元素的href设置为上述url, 并设置 download属性
  4. 最后触发一个a元素的点击事件,就会弹出保存文件的窗口。

转载于:https://www.cnblogs.com/a-distant-bright-star/p/7286782.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值