请问如何通过js触发下载
时间: 2024-03-13 21:42:59 浏览: 18
通过js触发下载,可以使用以下方法:
1. 使用XMLHttpRequest或Fetch API获取文件流数据,将数据转化为blob对象。
2. 将blob对象转化为URL,使用a标签的download属性指定文件名,设置a标签的href属性为blob URL。
3. 创建一个隐藏的a标签,将a标签添加到DOM中,模拟点击a标签触发下载。
示例代码如下:
```
function downloadFile(url, fileName) {
// 创建XMLHttpRequest对象或Fetch API来获取文件流数据
let xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function() {
// 转化blob对象为URL
let blobUrl = URL.createObjectURL(this.response);
// 创建a标签并设置属性
let a = document.createElement('a');
a.href = blobUrl;
a.download = fileName;
// 将a标签添加到DOM中
document.body.appendChild(a);
// 模拟点击a标签触发下载
a.click();
// 移除a标签
document.body.removeChild(a);
};
xhr.send();
}
```
在上述代码中,我们使用XMLHttpRequest或Fetch API来获取文件流数据,将数据转化为blob对象,并将blob对象转化为URL。接着,创建一个a标签,并设置它的href属性为blob URL,download属性为文件名。最后,将a标签添加到DOM中,并模拟点击a标签触发下载,完成下载后再将a标签从DOM中移除。