移动端使用创建a标签的方法下载文件流,点击没有效果是怎么回事

这是代码
网上大部分都是这种方法


  var oReq = new XMLHttpRequest();
            oReq.responseType = "blob";
            oReq.open("POST", url1, true);
            oReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //设置请求头
            oReq.setRequestHeader('accessToken', token); //设置请求头
            oReq.onload = (oEvent) => {
                if (oReq.status == 200) {
                    var content = oReq.response;
                    var blob = new Blob([content], { "type": oReq.response.type });
                    let url = window.URL.createObjectURL(blob);
                    let fileName = "1.pdf"; //通过 使用a标签的download方法下载文件
                    const a = document.createElement('a');
                    a.href = url;
                    a.download = fileName;
                    a.style.display = 'none';
                    document.body.appendChild(a);
                    a.click();
                    URL.revokeObjectURL(a.href);
                    document.body.removeChild(a);
                } else {
                    alert("下载失败!")
                }
            };
            oReq.send();

blob链接有,但是a.click() 好像不起作用,点击按钮运行函数到这里没有效果,页面有使用mui,不知道是什么原因导致的,有没有什么解决方法,或者别的方法来下载文件流

这个代码是打开页面立即执行吗?还是说需要用户做别的操作过后下载?
在append之后click之前打印一个消息看看走到这里了吗。
a的display不要设置为none试试。

把你那段代码删了吧,这是我之前项目写的下载文件的函数,你只需要把你的接口地址传过去就可以了,不要先调接口再把后端传回来的文件流转成文件,这样是有问题的,因为你无法知道你获取到的文件的后缀是什么,你直接使用a标签跳转就可以了,浏览器会自己识别,他会先预览,预览不了的文件会自己下载,这就是为什么使用a标签的理由

img