JavaScript下载文本文件需三步:创建Blob对象(如new Blob([content], {type: 'text/plain;charset=utf-8'}))、用URL.createObjectURL生成临时URL、通过a标签download属性触发下载,并在下载后调用URL.revokeObjectURL清理。

JavaScript 使用 Blob 对象生成并下载文本文件,核心是三步:创建 Blob、用 URL.createObjectURL 生成临时 URL、触发 a 标签下载。
创建 Blob 对象
把文本内容包装成 Blob,需指定 MIME 类型(如 text/plain 或 text/csv),可选地设置换行符和编码:
- 纯文本常用
new Blob([content], { type: 'text/plain;charset=utf-8' }) - CSV 文件建议用
'text/csv;charset=utf-8',内容中注意用\n换行 - Blob 构造函数第一个参数必须是数组(即使只有一段字符串)
生成可下载的临时 URL
调用 URL.createObjectURL(blob) 得到一个生命周期绑定当前文档的本地 URL:
PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。
- 该 URL 只在当前页面有效,刷新或关闭标签页后失效
- 为避免内存泄漏,下载完成后应尽快调用
URL.revokeObjectURL(url) - 不要重复使用同一个 URL 多次下载,每次下载都应新建 Blob 和 URL
触发自动下载
借助 <a> 标签的 download 属性实现静默下载:
立即学习“Java免费学习笔记(深入)”;
- 创建
document.createElement('a') - 设置
a.href = url和a.download = 'filename.txt'(扩展名影响浏览器默认打开方式) - 调用
a.click()触发下载;注意某些浏览器要求在用户操作(如点击)上下文中执行,否则可能被拦截
完整示例代码
以下函数可直接调用,生成并下载一段文本:
function downloadText(content, filename = 'download.txt') {
const blob = new Blob([content], { type: 'text/plain;charset=utf-8' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
// 调用示例:
downloadText('Hello, world!\n第二行内容', 'greeting.txt');

















