首页 > 其他分享 >js保存文件到本地

js保存文件到本地

时间:2023-03-24 10:13:46浏览次数:38  
标签:const domElement text 保存 js blob 本地 document type

使用原生方法保存文件到本地

基本流程

  • 确定要保存的文本、保存格式及保存文件类型;
  • 根据保存格式生成 url链接,设置文件的下载地址;
  • 创建一个 a 标签(即a标签指向的就是我们要保存的文件);
  • a 标签添加点击事件,下载文件到我们指定的地址;
  • 释放url链接;

实现方式

  • 1,document.createEvent创建事件,我们自己给DOM创建一个事件;
    • 创建自定义事件流程:
      • 创建事件;
      • 定义事件名;
      • 监听事件;
      • 分发给触发对象(触发对象可以是任何元素或其他事件目标);
function download(data,type,filename) {

  let text = JSON.stringify(data.value)

  let domElement = document.createElement('a')

  domElement.setAttribute('href', 'data:${type},'+ encodeURIComponent(text))

  domElement.setAttribute('download', filename)

  if(document.createEvent) {

    let event = document.createEvent('MouseEvents')

    event.initEvent('click', true, true)

    domElement.dispatchEvent(event)

  }else{

    domElement.click

  }

}
  • 2,浏览器事件;
function download(data,type,filename) {

  const button = document.getElementById('button')
  
  // 给按钮添加点击事件
  button.onclick = () => {
  
    const text = JSON.stringify(data.value)
    
    if(type === 'blob'){
    
      const blob = new Blob([text], {
      
        type: "text/plain;charset=utf-8"
        
      })
      
    }else if(type === 'json'){
    
      const blob = new Blob([text], {
      
	type: 'application/json'
        
      })
      
    }else if(type === 'markdown'){
    
      const blob = new Blob([text], {
      
	type: 'text/markdown'
        
      })
      
    }
    
    // 根据 blob生成 url链接
    const objectURL = URL.createObjectURL(blob)
    
    const domElement = document.createElement('a')
    
    domElement.href = objectURL
    
    domElement.download = filename 
    
    domElement.click()
    
    URL.revokeObjectURL(objectURL)
    
  }
}
					

标签:const,domElement,text,保存,js,blob,本地,document,type
From: https://www.cnblogs.com/rain111/p/17250442.html

相关文章

  • 前端js RSA jsrsasign加密、解密、加签、验签
     jsrsasign(RSA-SignJavaScript库)是一个免费的开源加密库,支持RSA/RSAPSS/ECDSA/DSA签名/验证,ASN.1,PKCS#1/5/8私钥/公钥,X.509证书,纯JavaScript中的CRL,OCSP,CMSSigned......
  • fabricjs如何导入echarts
    Fabric.js是一个强大的HTML5canvas库,而ECharts是一个基于JavaScript的图表库。要将ECharts导入到Fabric.js中,您需要先将ECharts渲染到一个离屏canvas,然后将......
  • js 替换逻辑
     letstr1=JSON.stringify(data).replace(/{/g,"[")   letstr2=str1.replace(/}/g,"]")   letstr3=str2.replace(/"/g,"")   letstr4......
  • 使用html2canvas+jspdf将页面转为pdf并下载
    1、安装html2canvas和jspdfnpminstallhtml2canvasnpminstalljspdf2、新建文件htmlToPdf.ts//导出页面为PDF格式importhtml2Canvasfrom'html2canvas'impor......
  • Vue.js Vuex实现求和案例
    视频Vuex版本componentsCount.vue<template> <div> <!--模板里能看见vc上所有东西--> <h1>当前求和为:{{$store.state.sum}}</h1> <selectv-model.number="n......
  • Vue.js 搭建Vuex环境
    视频npmivuex@33.搭建vuex环境创建文件:src/store/index.js//引入Vue核心库importVuefrom'vue'//引入VueximportVuexfrom'vuex'//应用Vuex插件Vue.u......
  • Vue.js 纯Vue实现求和案例
    纯Vue实现视频106纯Vue版本componentsCount.vue<template> <div> <h1>当前求和为:{{sum}}</h1> <selectv-model.number="n"> <!--收集到的是字符串类型,v-mo......
  • Vue.js Vuex简介
    简介视频......
  • Vue,js Vuex工作原理图
    Vuex原理解析视频107传参带数据允许走这条线store管理......
  • jsonpath解析淘票票城市
    步骤:首先找到城市的接口通过F12打开检查点击北京即可得到爬取数据的接口打开url发现显示的是jsonp121({"returnCode":"0","returnValue":{}});原因:​ 淘票票的请求头......