跳到主要内容

文本和链接✅

a 标签如何保存文件?

答案

<a> 标签本身用于跳转链接,但结合 download 属性或 JavaScript,可以实现文件下载功能。常见方式有两类:服务端生成下载、前端生成文件并触发下载。

  • 服务端下载:后端设置响应头(如 Content-Disposition: attachment),前端 <a href="下载地址"> 即可下载文件。适用于大文件或需鉴权的场景。
  • 前端生成:利用 JavaScript 创建 Blob 对象,生成临时 URL,设置 <a>hrefdownload 属性,模拟点击触发下载。适合导出文本、表格等前端可生成的数据。

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 属性自定义,提升用户体验。

参考资料

提示

如果要导出表格数据为 Excel,可用第三方库如 SheetJS,结合 Blob 和 <a> 标签实现一键下载。

48%