文件下载 & 文件新开窗口下载 & 批量下载文件
源码
export const downlodFile = (url) => {
if (!url) {
return
}
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
export const openDownloadFile = (url, name) => {
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.target = '_blank';
!!name && (link.download = name);
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
export const batchDownloadFile = (urlArr) => {
for (let i = 0; i < urlArr.length; i++) {
if (urlArr[i]) {
const iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.style.height = 0;
iframe.src = urlArr[i];
document.body.appendChild(iframe);
setTimeout(() => {
iframe.remove();
}, 5 * 60 * 1000);
}
}
}
知识点
- a.target
1.1 定义和用法
标签的 target 属性规定在何处打开链接文档。
如果在一个 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性命名的、名称与这个目标吻合的框架或者窗口中的文档。如果这个指定名称或 id 的框架或者窗口不存在,浏览器将打开一个新的窗口,给这个窗口一个指定的标记,然后将新的文档载入那个窗口。从此以后,超链接文档就可以指向这个新的窗口。
1.2 语法
1.3 属性值
_blank: 在新窗口中打开被链接文档。
_self: 默认。在相同的框架中打开被链接文档。
_parent: 在父框架集中打开被链接文档。
_top: 在整个窗口中打开被链接文档。
framename: 在指定的框架中打开被链接文档。 - a.download
2.1 定义和用法
download 属性规定被下载的超链接目标。
在 标签中必须设置 href 属性。
该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。
2.2 语法
2.3 属性值
filename: 规定作为文件名来使用的文本。 - iframe
3.1 定义和用法
iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。
用法
downlodFile(url)
openDownloadFile(url, `延时分析.csv`);
batchDownloadFile(urlList|| [])}