这是代码
网上大部分都是这种方法
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标签的理由