如何通过A标签的download属性实现文件下载操作?
- 内容介绍
- 文章标签
- 相关推荐
在网页中让使用者可以直接下载文件,而不是在浏览器中打开。这正是 A 标签 download 属性能帮你做到的。
痛点一的观点是。同源策略限制
浏览器出于安全考虑,只允许从同源下载文件。如果你想让使用者下载跨域资源,必须:
-
服务器返回
Access-Control-Allow-Origin头部; - 或者先将文件拉取到本地,再通过 Blob 或 Data URL 再发起下载。
至于痛点二,文件类型被拦截
不同浏览器对可下载文件类型有限制。例如 Chrome、Safari 对 .exe 等可执行文件默认会弹出安全提示。说到为避免被拦截,
-
确认服务器设置了正确的
MIME Type;示例:Content-Type: application/pdf - 必要时改用更通用格式,如 PDF、ZIP 等。
再看痛点三。命名不一致导致下载失败
download="自定义名称" 后面指定的名称应与实际服务器返回的文件名相符,否则某些浏览器会提示“无法完成下载”。
在网页中让使用者可以直接下载文件,而不是在浏览器中打开。这正是 A 标签 download 属性能帮你做到的。
痛点一的观点是。同源策略限制
浏览器出于安全考虑,只允许从同源下载文件。如果你想让使用者下载跨域资源,必须:
-
服务器返回
Access-Control-Allow-Origin头部; - 或者先将文件拉取到本地,再通过 Blob 或 Data URL 再发起下载。
至于痛点二,文件类型被拦截
不同浏览器对可下载文件类型有限制。例如 Chrome、Safari 对 .exe 等可执行文件默认会弹出安全提示。说到为避免被拦截,
-
确认服务器设置了正确的
MIME Type;示例:Content-Type: application/pdf - 必要时改用更通用格式,如 PDF、ZIP 等。
再看痛点三。命名不一致导致下载失败
download="自定义名称" 后面指定的名称应与实际服务器返回的文件名相符,否则某些浏览器会提示“无法完成下载”。

