@ylz/plugins
Version:
ylz plugins
66 lines (60 loc) • 1.92 kB
JavaScript
/**
* 根据后台接口文件流下载
* @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 }