使用原生方法保存文件到本地
基本流程
- 确定要保存的文本、保存格式及保存文件类型;
- 根据保存格式生成
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
}
}
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'
})
}
const objectURL = URL.createObjectURL(blob)
const domElement = document.createElement('a')
domElement.href = objectURL
domElement.download = filename
domElement.click()
URL.revokeObjectURL(objectURL)
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?