diff --git a/src/util/util.js b/src/util/util.js index 48c4e1d..6634ab1 100644 --- a/src/util/util.js +++ b/src/util/util.js @@ -308,3 +308,60 @@ export const getQueryString = (name) => { if (r != null) return unescape(decodeURI(r[2])); return null; } + +/** + * 下载文件 + * @param {String} path - 文件地址 + * @param {String} name - 文件名,eg: test.png + */ +export const downloadFileBlob = (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 url = URL.createObjectURL(this.response); + const a = document.createElement('a'); + a.style.display = 'none'; + a.href = url; + a.download = name; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + } + }; +} + +/** + * 下载文件 + * @param {String} path - 文件地址 + * @param {String} name - 文件名,eg: test.png + */ +export const downloadFileBase64 = (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) { + const fileReader = new FileReader(); + fileReader.readAsDataURL(this.response); + fileReader.onload = function () { + const a = document.createElement('a'); + a.style.display = 'none'; + a.href = this.result; + a.download = name; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }; + } + }; +}