UNPKG

@ylz/plugins

Version:

ylz plugins

66 lines (60 loc) 1.92 kB
/** * 根据后台接口文件流下载 * @param {*} data * @param {*} filename * @param {*} mime * @param {*} bom */ const downloadByData = (data, filename, mime, bom) => { let blobData = typeof bom !== 'undefined' ? [bom, data] : [data] let blob = new Blob(blobData, { type: mime || 'application/octet-stream' }) if (typeof window.navigator.msSaveBlob !== 'undefined') { window.navigator.msSaveBlob(blob, filename) } else { let blobURL = window.URL.createObjectURL(blob) let tempLink = document.createElement('a') tempLink.style.display = 'none' tempLink.href = blobURL tempLink.setAttribute('download', filename) if (typeof tempLink.download === 'undefined') { tempLink.setAttribute('target', '_blank') } document.body.appendChild(tempLink) tempLink.click() document.body.removeChild(tempLink) window.URL.revokeObjectURL(blobURL) } } /** * 根据文件地址下载文件 * @param {*} sUrl */ const downloadByUrl = (sUrl, target = '_self') => { const isChrome = window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1 const isSafari = window.navigator.userAgent.toLowerCase().indexOf('safari') > -1 if (/(iP)/g.test(window.navigator.userAgent)) { console.error('您的浏览器不支持下载!') return false } if (isChrome || isSafari) { let link = document.createElement('a') link.href = sUrl link.target = target if (link.download !== undefined) { let fileName = sUrl.substring(sUrl.lastIndexOf('/') + 1, sUrl.length) link.download = fileName } if (document.createEvent) { let e = document.createEvent('MouseEvents') e.initEvent('click', true, true) link.dispatchEvent(e) return true } } if (sUrl.indexOf('?') === -1) { sUrl += '?download' } window.open(sUrl, target) return true } export default { downloadByData, downloadByUrl }