通用文件下载方法
/**
* 下载(表单提交)
*/
downLoad (url, data, method, isNewWinOpen) {
var config = {
url: url,
data: (data = data || {}),
method: (method = method || "GET"),
isNewWinOpen: (isNewWinOpen = isNewWinOpen || false)
};
var form = document.createElement('form');
form.setAttribute('method', config.method);
form.setAttribute('action', config.url);
if (config.isNewWinOpen) {
form.setAttribute('target', '_blank');
} else {
form.setAttribute('target', 'down-file-iframe');
}
for (var key in config.data) {
var input = document.createElement('INPUT');
input.setAttribute('type', 'hidden');
input.setAttribute('name', key);
input.setAttribute('value', config.data[key]);
form.appendChild(input);
}
var iframe = document.createElement('iframe');
iframe.setAttribute('name', 'down-file-iframe');
iframe.setAttribute('style', 'display:none;');
iframe.appendChild(form);
document.body.appendChild(iframe);
form.submit();
let t = setTimeout(function () {
window.clearTimeout(t);
t = null;
iframe.remove();
}, 1000);
}
/**
* 下载(a标签)
*/
function downloadByURL(url, saveName) {
if (typeof url == 'object' && url instanceof Blob) {
url = URL.createObjectURL(url); // 创建blob地址
}
var aLink = document.createElement('a');
aLink.href = url;
aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
var event;
if (window.MouseEvent) event = new MouseEvent('click');
else {
event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
}
aLink.dispatchEvent(event);
}
/**
* fatch 得到blob对象下载
*/
fetch(urls[0]).then(response => { // 同axios
response.blob().then(blob => {
downloadByURL(blob,'下载2');
})
})
/**
* 下载excel等
*/
window.location.href=urls[0];
来源:网络