1.因某些环境原因,后台无法给文件下载地址,以及无法使用blob下载二进制流,ajax模拟form提交无法直接下载excal
2.现在下载使用浏览器的form表单去下载excal文件,
触发下载按钮执行下面的代码, 请求form后,会有后台查询数据的过程,数据量大了就有十几秒,查询完浏览器才会弹出下载框,我前台如何监听到form后台的查询过程,毕竟不是ajax会有返回结果,如何给用户页面加loading之类的效果,或者如何监听用户点击另存为 取消另存为等操作?
3.感谢大佬们能看到这里,希望能帮助下我。
export default function(options){
return new Promise((resolve, reject)=>{
let dlform = document.createElement('form');
dlform.style = "display:none;";
dlform.method = options.method;
dlform.action = options.url;
// dlform.target = '_blank'; 打开新页面会是action的地址,我更操作不了,无法加loading之类的。
let token = document.createElement('input');
token.type = 'hidden';
token.name = 'x-access-token';
token.value = tool.getSession('TKid');
dlform.appendChild(token);
for(let index in options.data){
let hdnFilePath = document.createElement('input');
hdnFilePath.type = 'hidden';
hdnFilePath.name = index;
hdnFilePath.value = options.data[index];
dlform.appendChild(hdnFilePath);
}
document.body.appendChild(dlform);
dlform.submit();
document.body.removeChild(dlform);
resolve('下载')
})
}
Promise
之前直接开启loading状态
resolve
后关闭loading
监控用户点击另存为不是
oncontextmenu吗