网站首页 > 技术文章 正文
下载脚本长期以来一直是互联网可用性的重要组成部分。一般都是在服务端来实现的居多,随着技术的发展,前后端分离技术的兴起,以前很多后端的事也更多让前端来实现,我开始寻找一种无需服务器就可以强制下载的方法,经过一番努力,终于我找到了它,就在Firefox Devols Debugger中,有兴趣的朋友可以自己去试一下!
废话不多说,直接上脚本。
1、javascript脚本
function downloadFile(data, fileName, type="text/plain") { // 创建不可见的元素 const a = document.createElement("a"); a.style.display = "none"; document.body.appendChild(a); // 将href设置为要下载数据的blob表示形式 a.href = window.URL.createObjectURL( new Blob([data], { type }) ); // 使用下载属性设置所需的文件名 a.setAttribute("download", fileName); // 通过模拟点击触发下载 a.click(); // 清理 window.URL.revokeObjectURL(a.href); document.body.removeChild(a); }
2、html元素
<form onsubmit="onFormSubmit(); return false;"> <p> <label for="demo_filename">文件名称:</label><br> <input type="text" id="demo_filename"> </p> <p> <label for="demo_content">内容:</label><br> <textarea id="demo_content"></textarea> </p> <button type="submit">下载</button> </form>
3、运行效果
是不是很简单,这样做的函数非常小,并且依赖于URL.createObjectUrl,函数注入<a>元素,将其设置为Blob值设置为目标文件的文本内容,并单击下载按钮以触发下载。元素在过程中保持隐藏状态,并在click()调用,一旦函数被调用,浏览器的下载提示就会显示出来,createObjectURL和Blob这两种技术才是真正的魔力!
猜你喜欢
- 2024-10-03 windows系统搭建node.js Vue开发环境图文教程
- 2024-10-03 一款思维导图显示编辑javascript类库jsmind
- 2024-10-03 你不知道的javascropt(上、下卷)pdf版下载领取
- 2024-10-03 前端实现最佳截图方案(上)(前端图文教程)
- 2024-10-03 下载文件并使用Javascript将其压缩在浏览器中「云图智联」
- 2024-10-03 我的世界手机版真实js下载(我的世界手机版真实js下载教程)
- 2024-10-03 原生JS封装拖动验证滑块你会吗?「实践」
- 2024-10-03 如何从网络上下载一张图片并保存到本地?
- 2024-10-03 前端工程化应该怎么做?Letjs工程化体系介绍
- 2024-10-03 了解 JS 压缩图片,这一篇就够了(js 压缩图片大小)
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)