当前位置:   article > 正文

Js文件下载的两种方式【超简单】_js 文件怎么下下来

js 文件怎么下下来
  • 文件下载一般有几种情况
    • 1.url
    • 2.文件流

file-saver库实现文件下载

  1. // 流方式
  2. import { saveAs } from "file-saver";
  3. //content 文件流,xxx.pdf 文件名称
  4. saveAs(content, `xxx.pdf`);
  5. // url方式
  6. import { saveAs } from "file-saver";
  7. const url = 'xxx.jpg'
  8. fetch(url)
  9. .then((response) => response.blob())
  10. .then((blob) => {
  11. saveAs(blob, `xxx.pdf`);
  12. })

手写方式

  • url方式
    • 原理:创建一个a标签,传入url点一下a标签就可以下载了
  • ​​​​​​​流方式
    • ​​​​​​​原理:将流转换成缓存的url,再创建一个a标签传入url,点一下就实现了

【工具类】文件下载类

  1. //utils/downloadFile
  2. class DownloadFile {
  3. /**
  4. *
  5. * @param {*} file 文件流
  6. * @returns
  7. */
  8. getObjectURL(file) {
  9. let url = null;
  10. if (window.createObjectURL !== undefined) {
  11. // basic
  12. url = window.createObjectURL(file);
  13. } else if (window.webkitURL !== undefined) {
  14. // webkit or chrome
  15. try {
  16. url = window.URL.createObjectURL(file);
  17. } catch (error) {
  18. console.log(error);
  19. }
  20. } else if (window.URL !== undefined) {
  21. // mozilla(firefox)
  22. try {
  23. url = window.URL.createObjectURL(file);
  24. } catch (error) {
  25. console.log(error);
  26. }
  27. }
  28. return url;
  29. }
  30. /**
  31. * 文件点击下载
  32. * @param {*} blob 文件流
  33. * @param {*} fileName 文件名
  34. */
  35. downloadFile(blob, fileName) {
  36. let eleLink = document.createElement("a");
  37. eleLink.download = fileName;
  38. eleLink.style.display = "none";
  39. // 字符内容转变成blob地址
  40. eleLink.href = this.getObjectURL(blob);
  41. // 自动触发点击
  42. document.body.appendChild(eleLink);
  43. eleLink.click();
  44. // 然后移除
  45. document.body.removeChild(eleLink);
  46. }
  47. /**
  48. * 获取文件名后缀
  49. * @param {*} filename 文件名
  50. * @returns
  51. */
  52. getFileFix(filename) {
  53. let fix = filename.substring(filename.lastIndexOf("\.") + 1).toLocaleLowerCase();
  54. return fix;
  55. }
  56. /**
  57. * 是否可预览
  58. * @param {*} filename 文件名
  59. * @returns true可,false不可
  60. */
  61. isPreview(filename) {
  62. let fix = this.getFileFix(filename)
  63. switch (fix) {
  64. case "jpg":
  65. case "jpge":
  66. case "png":
  67. case "pdf":
  68. case "mp4":
  69. case "txt": {
  70. return true
  71. }
  72. default: {
  73. return false
  74. }
  75. }
  76. }
  77. /**
  78. * 预览文件
  79. * @param {*} blob 文件流
  80. */
  81. preview(blob) {
  82. return this.getObjectURL(blob);
  83. }
  84. /**
  85. * 是服务器流 false 本地流true
  86. * @param {*} blob 文件流
  87. */
  88. static isLocalFile(blob) {
  89. return blob.raw ? true : false
  90. }
  91. }
  92. export default DownloadFile

下载

  1. import DownloadFile from "@/utils/DownloadFile";
  2. let d = new DownloadFile();
  3. // content 文件流【blob】
  4. d.downloadFile(content, "优惠码.zip");

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/63619
推荐阅读
相关标签
  

闽ICP备14008679号