file.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /**
  2. * *获取上传的文件数据
  3. * @param { File } file 文件对象
  4. */
  5. export const readFile = (file: File) => {
  6. return new Promise((resolve: Function) => {
  7. try {
  8. const reader = new FileReader()
  9. reader.onload = (evt: ProgressEvent<FileReader>) => {
  10. if (evt.target) {
  11. resolve(evt.target.result)
  12. }
  13. }
  14. reader.readAsText(file)
  15. } catch (error) {
  16. window['$message'].error('文件读取失败!')
  17. }
  18. })
  19. }
  20. /**
  21. * * 通过 a 标签下载数据
  22. * @param url
  23. * @param filename
  24. * @param fileSuffix
  25. */
  26. export const downloadByA = (url: string, filename = new Date().getTime(), fileSuffix?: string) => {
  27. const ele = document.createElement('a') // 创建下载链接
  28. ele.download = `${filename}.${fileSuffix}` //设置下载的名称
  29. ele.style.display = 'none' // 隐藏的可下载链接
  30. // 字符内容转变成blob地址
  31. ele.href = url
  32. // 绑定点击时间
  33. document.body.appendChild(ele)
  34. ele.click()
  35. // 然后移除
  36. document.body.removeChild(ele)
  37. }
  38. /**
  39. * * 下载数据
  40. * @param { string } content 数据内容
  41. * @param { ?string } filename 文件名称(默认随机字符)
  42. * @param { ?string } fileSuffix 文件名称(默认随机字符)
  43. */
  44. export const downloadTextFile = (
  45. content: string,
  46. filename = new Date().getTime(),
  47. fileSuffix?: string
  48. ) => {
  49. // 字符内容转变成blob地址
  50. const blob = new Blob([content])
  51. downloadByA(URL.createObjectURL(blob), filename, fileSuffix)
  52. }