本篇文章介绍通过JavaScript下载文件到本地的方法(单文件)。 最近在做一个文件下载的功能,这里把做的过程中用的技术和坑简要总结下。 1. 单文件下载(a标签) 同源单文件 针对单文件的情况下,同源的文件,可以通过 a 标签的 download 属性下载文件 const e
本篇文章介绍通过JavaScript下载文件到本地的方法(单文件)。 最近在做一个文件下载的功能,这里把做的过程中用的技术和坑简要总结下。 1. 单文件下载(a标签) 同源单文件 针对单文件的情况下,同源的文件,可以通过 < a> 标签的 download 属性下载文件
但是这个方案并不适用于非同源的资源,此时它相当于普通的超链接,点击会跳转到资源页面,而不是下载。 非同源图片 如果不存在CORS问题, 可以借助Blob实现下载(构造xhr请求文件地址, 以Blob的形式接收Response):
如果存在CORS问题,可以考虑使用 canvas 将图片转换成 base64 编码之后再通过 标签的 download 属性下载
2. 单文件下载(iframe) iframe方式是在页面内隐藏iframe, 然后将下载地址加载到iframe中, 从而触发浏览器的下载行为
但是这里发现,即使是同域的图片,也无法完成下载,这是为啥呢? 这里就有个上面的a链接下载没有提到的问题:什么样的链接才能触发浏览器的下载: url如何触发浏览器自动下载 一个url能否触发浏览器自动下载,主要看该请求响应头response header是否满足,一般是看Content-Disposition和Content-Type这两个消息头:
后端
单文件的处理先写到这里,多文件的下载下篇在写。 |
2021-06-04
2019-01-10
2019-02-17
2021-09-12
2021-09-30