如何使用 window.open() 下载文件: 在本页面打开并防止浏览器拦截
下载文件时,接口请求返回内容一般有两种: 直接返回文件内容,返回一个url
用window.open()直接打开请求地址或者返回的url,可能会因为跨域问题导致浏览器拦截
解决办法是:在请求前,打开一个窗口,然后将请求地址或者返回的url直接赋值给该窗口的href
1. 直接返回文件内容: 打开请求api地址
downPkg() {
let mywin = window.open('','_self');
mywin.location.href = apiPath;
}
2. 返回url时:打开返回的url
downPkg() { var mywin = window.open('','_self'); //注意一定要在请求前操作此步 this.$server.getPackage_async().then(res => { //这里是自己封装的ajax方法 if (res.result) { mywin.location.href = res.data; } }); }