文本和链接✅
a 标签如何保存文件?
答案
<a>
标签本身用于跳转链接,但结合 download 属性或 JavaScript,可以实现文件下载功能。常见方式有两类:服务端生成下载、前端生成文件并触发下载。
- 服务端下载:后端设置响应头(如
Content-Disposition: attachment
),前端<a href="下载地址">
即可下载文件。适用于大文件或需鉴权的场景。 - 前端生成:利用 JavaScript 创建 Blob 对象,生成临时 URL,设置
<a>
的href
和download
属性,模拟点击触发下载。适合导出文本、表格等前端可生成的数据。
1. 服务端下载(Node.js/Express)
// Node.js 示例
app.get('/download', (req, res) => {
res.setHeader('Content-Disposition', 'attachment; filename=demo.txt')
res.send('File content here')
})
前端:
<a href="/download">下载文件</a>
2. 前端生成并下载文件
const data = 'Hello, world!'
const blob = new Blob([data], { type: 'text/plain' })
const url = URL.createObjectURL(blob)
const a = document.createElement('a')
a.href = url
a.download = 'hello.txt'
a.click()
URL.revokeObjectURL(url)
- 仅设置
<a href="xxx">
不会自动下载,需配合download
属性或服务端响应头。 - 前端 Blob 下载不适合大文件,且部分移动端浏览器支持有限。
- 用户数据导出优先用前端 Blob,敏感或大文件用服务端生成。
- 文件名可通过
download
属性自定义,提升用户体验。
参考资料
- MDN:
<a>
download 属性 - 官方文档 - Blob 对象介绍 - MDN
- Node.js 响应文件下载 - Express 文档
提示
如果要导出表格数据为 Excel,可用第三方库如 SheetJS,结合 Blob 和 <a>
标签实现一键下载。