UNPKG

tav-ui

Version:
1 lines 6.12 kB
{"version":3,"file":"download2.mjs","sources":["../../../../../../packages/utils/file/download.ts"],"sourcesContent":["// import { openWindow } from \"../../index\";\nimport { dataURLtoBlob, urlToBase64 } from './base64Conver'\n\nfunction openWindow(\n url: string,\n opt?: { target?: TargetContext | string; noopener?: boolean; noreferrer?: boolean }\n) {\n const { target = '__blank', noopener = true, noreferrer = true } = opt || {}\n const feature: string[] = []\n\n noopener && feature.push('noopener=yes')\n noreferrer && feature.push('noreferrer=yes')\n\n window.open(url, target, feature.join(','))\n}\n\n/**\n * Download online pictures\n * @param url\n * @param filename\n * @param mime\n * @param bom\n */\nexport function downloadByOnlineUrl(url: string, filename: string, mime?: string, bom?: BlobPart) {\n urlToBase64(url).then((base64) => {\n downloadByBase64(base64, filename, mime, bom)\n })\n}\n\n/**\n * Download pictures based on base64\n * @param buf\n * @param filename\n * @param mime\n * @param bom\n */\nexport function downloadByBase64(buf: string, filename: string, mime?: string, bom?: BlobPart) {\n const base64Buf = dataURLtoBlob(buf)\n downloadByData(base64Buf, filename, mime, bom)\n}\n\n/**\n * Download according to the background interface file stream\n * @param {*} data\n * @param {*} filename\n * @param {*} mime\n * @param {*} bom\n */\nexport function downloadByData(data: BlobPart, filename: string, mime?: string, bom?: BlobPart) {\n const blobData = typeof bom !== 'undefined' ? [bom, data] : [data]\n const blob = new Blob(blobData, { type: mime || 'application/octet-stream' })\n\n const blobURL = window.URL.createObjectURL(blob)\n const tempLink = document.createElement('a')\n tempLink.style.display = 'none'\n tempLink.href = blobURL\n tempLink.setAttribute('download', filename)\n if (typeof tempLink.download === 'undefined') tempLink.setAttribute('target', '_blank')\n\n document.body.appendChild(tempLink)\n tempLink.click()\n document.body.removeChild(tempLink)\n window.URL.revokeObjectURL(blobURL)\n}\n\n/**\n * Download file according to file address\n * @param {*} sUrl\n */\nexport type TargetContext = '_self' | '_blank'\nexport function downloadByUrl({\n url,\n target = '_blank',\n fileName,\n}: {\n url: string\n target?: TargetContext\n fileName?: string\n}): boolean {\n const isChrome = window.navigator.userAgent.toLowerCase().includes('chrome')\n const isSafari = window.navigator.userAgent.toLowerCase().includes('safari')\n\n if (/(iP)/g.test(window.navigator.userAgent)) {\n console.error('Your browser does not support download!')\n return false\n }\n if (isChrome || isSafari) {\n const link = document.createElement('a')\n link.href = url\n link.target = target\n\n if (link.download !== undefined)\n link.download = fileName || url.substring(url.lastIndexOf('/') + 1, url.length)\n\n if (document.createEvent) {\n const e = document.createEvent('MouseEvents')\n e.initEvent('click', true, true)\n link.dispatchEvent(e)\n return true\n }\n }\n if (!url.includes('?')) url += '?download'\n\n openWindow(url, { target })\n return true\n}\n"],"names":[],"mappings":"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"}