现在需求是文件下载,任意类型文件,后台返回的是一个外链url。
我是通过创建 a 标签去下载。但是这个会出现pdf文件和图片预览的情况。
请问怎么做可以避免预览,无论哪种类型文件,都可以通过外链url直接下载?
谢谢
// path name
const xhr = new XMLHttpRequest();
xhr.open('get', path);
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
// 如果是IE10及以上,不支持download属性,采用msSaveOrOpenBlob方法,但是IE10以下也不支持msSaveOrOpenBlob
if ('msSaveOrOpenBlob' in navigator) {
navigator.msSaveOrOpenBlob(this.response, name);
return;
}
// const blob = new Blob([this.response], { type: xhr.getResponseHeader('Content-Type') });
// const url = URL.createObjectURL(blob);
const url = URL.createObjectURL(this.response);
let eleLink = document.createElement("a");
eleLink.href = url;
eleLink.download = name;
eleLink.style.display = "none";
document.body.appendChild(eleLink);
eleLink.click();
document.body.removeChild(eleLink);;
URL.revokeObjectURL(url);
}
};